相信不少人都已经知道tp6.0已经适配swoole.并推出think-swoole 3.0 ,这次就来介绍下tp6中swoole扩展websocket的使用。
Websocket 继承与Http,进行websocket连接之前需要一次HTTP请求,如果当期地址支持websocket则返回101,然后进行连接。也就是说并不是服务支持websocket后,请求每个连接地址都可以进行websocket连接,而是需要预先适配才可以连接。
thinkphp6.0中新增的一项就是Event,websocket服务这块依赖于Event,因此我们需要先创建一个Event listener
php think make:listener WebsocketTest
执行过后,将会在app目录下看到新增的目录和文件
其中handle是用来处理事件。
class WebsocketTest { public $websocket = null; /** * 注入容器管理类,从容器中取出Websocket类,或者也可以直接注入Websocket类, */ public function __construct(Container $container) { $this->websocket = $container->make(Websocket::class); } /** * 事件监听处理 * * @return mixed */ public function handle($event) { //回复客户端消息 $this->websocket->emit("testcallback", ['aaaaa' => 1, 'getdata' => $event['asd']]); //不同于HTTP模式,这里可以进行多次发送 $this->websocket->emit("testcallback", ['aaaaa' => 1, 'getdata' => $event['asd']]); } }
Websocket和事件是如何关联的呢?
打开config目录找到swoole.php,修改其中配置信息
'websocket' => [ 'enable' => true, 'handler' => Handler::class, 'parser' => Parser::class, 'ping_interval' => 25000, 'ping_timeout' => 60000, 'room' => [ 'type' => 'table', 'table' => [ 'room_rows' => 4096, 'room_size' => 2048, 'client_rows' => 8192, 'client_size' => 2048, ], 'redis' => [ ], ], 'listen' => [ 'test' => \app\listener\WebsocketTest::class, //这里将事件名称和事件处理类进行注册 ], 'subscribe' => [], ], 'rpc' => [ 'server' => [ 'enable' => false, 'port' => 9000, 'services' => [ ], ], 'client' => [ ], ],
接下来就是见证奇迹的时刻,启动服务,打开http://127.0.0.1:8882/demo.html 并打开控制台,执行如下代码,就可以看到页面打印出服务器反馈的信息
注意发送的数据内容格式,demo中存在字段asd
socket.emit("test",{"asd":"我是内容"})
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/7420/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取