参考文献
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
实现自动重栽,参考上文中的链接