搜索
系统检测到您的用户名不符合规范:

tp6里面swoole扩展websocket的使用方法

浏览:8187 发布日期:2019年12月10日 分类:求助交流 关键字: tp6
相信不少人都已经知道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


以上内容希望帮助到大家,为了大家都能够早日进阶PHP架构师,可以参考下这份PHP架构师路线图,请戳 https://shimo.im/docs/KcrgrdtVcJWVGG6D/read
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
rqwersads
积分:327 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /