使用 Laravel-echo-server 构建实时应用(四)HTTP API
在我以前的「 文章 」中,已经说过了怎样设置 Laravel Echo Server 包来运行一个 socket.io 服务器,来与你的 Laravel 应用融合。如果你还没有读过这篇文章,强烈建议你去阅读一下我的这篇文章,传送门:「 使用 Laravel-echo-server 构建实时应用」。
这个 Laravel Echo Server 不仅是一个 socket 服务器,也提供了一个基础 API,使你能从服务器读取数据。 在管理面板中显示统计数据可能很方便,或者在你无法连接到套接字服务器时给出错误信息(使你知道它已经不在线,或者你可以给你用户或者客户提供一个错误信息)。
你可以请求:
- 服务器状态
- 频道列表
- 频道详情
- 频道用户列表
为了使用这个 API,你必须创建一个 API 客户端,让我们开始吧。
配置 API
我们首先添加一个 API 客户端进行身份验证,确保你在 laravel-echo-server.json
文件的项目根目录下:
$ laravel-echo-server client:add APP_ID
APPID 可以自定义,但我建议是数字字母一类 (0--9, a-z, A-Z, , -) 的字符。
如果你没有传递参数,它会自动随机生成一个 APP_ID 。
创建成功后,你会看到类似下面的输出:
$ laravel-echo-server client:add MyApp
你将获得一个密匙,以便于你进行 API 身份验证,如果查看 laravel-echo-server.json
文件,你会发现里有一个 clients
数组:
"clients": [
{
"appId": "MyApp",
"key": "94907927005e5bfc87cc42d47e7cac65"
}
],
连接 socket 服务器中的 API
首先,启动 socket 服务器,命令如下:
$ laravel-echo-server start
在这个 API 中,你可以使用两种验证身份的方式。一种是通过认证头方式,另一种是通过在 URL 中增加 auth_key
参数的方式,如下:
http://testing-laravel.test:6001/apps/MyAp...
我总是喜欢尽可能的保持简洁的 URL,所以在本教程中,我将用认证头的方式来校验我的 API。
URL 语法如下:
http://{HOST}:{PORT}/apps/{APP_ID}/{method}
在我的例子中,是这样的:
http://testing-laravel:6001/apps/MyApp/sta...
尝试发起一个请求:
如果你得到下面这样的响应信息:
{
"error": "Unauthorized"
}
这意味着你没有发送正确的 API key,或者这个 key 和 laravel-echo-server.json
文件中设置的不匹配。
正如你在上面截图中看到的,你得到了一些关于你的 Laravel Echo 服务器的基本信息。在你的管理面板中,很方便的显示出有多少用户连接了你的 socket 服务器,已经内存使用情况。
你还可以在这个 API 中配置 CORS:
"apiOriginAllow":{
"allowCors" : true,
"allowOrigin" : "http://testing-laravel.test",
"allowMethods" : "GET, POST",
"allowHeaders" : "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
注意:如果你修改laravel-echo-server.json
文件,请重启你的 socket 服务器,以确保你的修改生效。
你也可以获取连接的通道和关于这些的详细信息。想要了解更多信息,我建议你阅读一下这个页面,它包括了这个 API 的所有路由:
「tlaverdure/laravel-echo-server」
我希望这篇文章对你有所帮助,如有任何问题,请在文章下发留言。
感谢你的阅读!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
这个系列的文章这一篇是第四篇了,这种有联系的能整一个相互的链接吗?这样就会很方便啦