您现在的位置是:网站首页> 内容页

ThinkPHP 5.0+GatewayWorker

  • 【王彬】
  • 2020-05-28
  • 101人已阅读
简介ThinkPHP 5.0+GatewayWorker实现即时通讯


ThinkPHP 5.0+GatewayWorker实现即时通讯


    逻辑整理:

操作流程:
    1.下载GatewayWorker,并放入tp5的任意目录 我这里是: tp5\vendor\GatewayWorker   下载地址:http://doc2.workerman.net

    2.修改tp5\vendor\GatewayWorker\Applications\YourApp\start_gateway.php 里面的
        // gateway 进程,这里使用Text协议,可以用telnet测试
         $gateway = new Gateway("tcl://0.0.0.0:8282");
        改成
        $gateway = new Gateway("Websocket://0.0.0.0:8282");

    3.让index.html文件能够进行正确显示(tp5的模板渲染,不多说)

    4.在index.html文件里面进行GatewayWorker的链接【前提是要先开启GatewayWorker】
        链接方式: var ws =  new WebSocket("ws://127.0.0.1:8282");
        特别注意: GatewayWorker  业务开发只需要关注 Applications/项目/Events.php一个文件即可。
                  每次修改Events.php 都要重启rGatewayWorker

    5.链接成功后分析代码:
        Events.php
        5.1:onConnect()
            这是链接时触发,这里可以放一些初始化信息,譬如说双方id的绑定(数据初始化),初始数据的调用等,链接成功之后,把数据进行处理
            然后发送到js 用  ws.onmessage进行一个接收这个时候第一步的交互就已经完成了
        5.2 ws.send()
            数据接收到之后,根据不同的数据进行一个分类处理,对界面做一个基本数据的一个绑定,
            到这里连接完成[第一次交互],随后进行数据信息的频繁交互,也就是聊天开始,这个时候由页面向 通过 ws.send() 方法向 Events.php 里的 onMessage 进行消息的推送
            ws.send() 推送过去的数据也是需要进行数据的信息处理的,这些处理包括:发送者,接收者,发送的信息类型,发送的信息等【发送同时对页面也要进行一些实时操作】
            onMessage 对接收的数据获取到后,进行一个解析,然后根据不同的类型,进行处理。然后在返回到 前端 ws.onmessage 里面
            这时 ws.onmessage 对数据进行处理,包括持久化缓存,数据信息展示还有一些其他的等等。。。  这样就又进行了二次交互

        5.3 接下来就是循环上面两步。。。

    6.初步通讯交互完成~


上一篇: tp6+workerman

下一篇: linux 安装Docker

文章评论

Top