使用 Laravel-echo-server 构建实时应用(四)HTTP API

在我以前的「 文章 」中,已经说过了怎样设置 Laravel Echo Server 包来运行一个 socket.io 服务器,来与你的 Laravel 应用融合。如果你还没有读过这篇文章,强烈建议你去阅读一下我的这篇文章,传送门:「 使用 Laravel-echo-server 构建实时应用」。

file

这个 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

file

你将获得一个密匙,以便于你进行 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...

尝试发起一个请求:

file

如果你得到下面这样的响应信息:

{
    "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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://medium.com/@dennissmink/laravel-...

译文地址:https://learnku.com/laravel/t/14552/buil...

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
yanrui

这个系列的文章这一篇是第四篇了,这种有联系的能整一个相互的链接吗?这样就会很方便啦

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!