Think-Swoole之WebSocket事件订阅的示例

小编给大家分享一下Think-Swoole之WebSocket事件订阅的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了科尔沁左翼免费建站欢迎大家使用!

通过前面的实例中,如果按照之前的事件监听方式,客户端的每个场景事件,服务端都需要创建每个对应的事件,如果事件太多, app/listener 目录下将会有很多的文件(其实也不算什么坏现象),事件订阅就是为了解决这一问题,把所有的事件都写在一个文件中。

下面用事件订阅的方式处理事件

首先需要把之前在 app/event.php 监听的事件给注释掉,然后创建一个监听事件:php think make:listener SubTest 。

然后在 config/swoole.php 配置中的 websocket => subscribe 配置刚创建的监听文件:

'websocket'  => [
        .
        .
        .
        'listen'        => [],
        'subscribe'     => [
           \app\listener\SubTest::class
        ],
],

在 app/listener/SubTest.php 中定义需要监听的事件:

<?php
declare (strict_types = 1);
namespace app\listener;
class SubTest
{
    protected $websocket = null;
    public function __construct()
{
        $this -> websocket = app('\think\swoole\Websocket');
    }
    //连接事件
    public function onConnect()
{
        $this -> websocket -> emit('sendfd',$this -> websocket -> getSender());
    }
    //加入房间
    public function onJoin($event)
{
        $this -> websocket -> join($event['room']);
        $this -> websocket -> emit('joincallback','加入房间成功');
    }
    public function onRoomTest($event)
{
        $this -> websocket -> to($event['room']) -> emit('roomtestcallback',$event['message']);
    }
}

监听事件的方法命名规范:on+事件场景标识(驼峰命名)

用之前的前端页面进行测试,一切正常。

以上是“Think-Swoole之WebSocket事件订阅的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

分享名称:Think-Swoole之WebSocket事件订阅的示例
分享链接:https://www.cdcxhl.com/article34/gepese.html

成都网站建设公司_创新互联,为您提供软件开发域名注册品牌网站设计网站收录App设计全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司