参考文献

think-swoole

ThinkPHP 6.0 开发文档:https://www.kancloud.cn/manual/thinkphp6_0/1037479

Think-swoole 文档:https://www.kancloud.cn/manual/thinkphp6_0/1359700

socket.io 客户端Api:https://www.w3cschool.cn/socket/socket-k49j2eia.html

代码下载:https://github.com/mailjobblog/dev_swoole/tree/master/210529_think-swoole

laravels

Laravel 开发文档:https://learnku.com/docs/laravel/8.x/installation/9354

laravels 中文文档:https://github.com/hhxsv5/laravel-s/blob/master/README-CN.md

代码下载:https://github.com/mailjobblog/dev_swoole/tree/master/210601_laravels

inotify修改代码后自动Reload:https://github.com/hhxsv5/laravel-s/blob/master/README-CN.md#修改代码后自动reload

supervisorctl使用详解:https://www.jianshu.com/p/0b9054b33db3

常见问题

think-swoole的通信协议问题

think-swoole 中的websocket协议聊天,使用的是 socket.io 协议,开发的时候要注意规范。

举个例子,比如 websocket 客户端可以使用 send 向服务端发送消息,但是 socket.io 使用的是 emit 发送消息。

还有事件的绑定,客户端绑定的事件名称要和服务端监听的事件名称一致。

swoole是长驻内存,修改代码后需要重启服务吗

由于swoole服务启动后会把 php-fpm 加载到服务里面,所以php每次访问的时候直接访问服务而省去了服务启动步骤。但是这样做的时候,新加入程序代码由于是在服务器启动后加入的,没有被加入到服务中,导致修改的代码不生效。

所以针对这个问题,有如下的解决方案:

  • 采用swoole提供的 reload 重载方法,点击链接 阅读
  • 采用第三方软件inotify实现自动重栽,参考上文中的链接