swoole打造高性能赛事直播平台8(聊天室)

聊天室模型如下图所示

    当用户按下回车键,自动请求后台接口

        同样在我们的index/chart/index方法中将用户的聊天内容推送给客户端

        这里客户端接收内容,渲染到前端页面中


        通过上面我们不难发现聊天室的原理和我们之前所做的图文直播没有太大的区别。不过之前我们所做的图文直播是调用服务器的8811端口,而我们的聊天室假如也调用8811的话,那么不单单是双方发布的信息会产生混淆,就连推送的用户也会混淆

        针对这种情况我们有两种解决措施:

        1 每个端口上再加一个参数进行区分

            例如:http://112.74.161.233:8811/?s=index/chart/index&type=chart

            这样我们可以通过websocket中的onOpen,onClose 方法中的request来获取type值,通过type值区分不同的用户和内容

        2 一个wedsocket服务器开启两个端口,8811为图文直播,8812为聊天室

        于是,明哥就在客户端上的js文件中又请求了 8812端口

        当用户点击回车键发送消息时。客户端报错信息如下图所示   8811端口成功连接,8812端口则连接失败

        那么回到我们wedsocket服务的代码,仔细观察发现我们仅开启了8811端口。8812端口则未开启。我们当然可以继续新建一个wedsocket服务文件,重新开启新8812端口,不过显然这并不是一个好的解决办法。通过查看官方文档,我们可采用监听新端口的方式来获取8812端口

官方文档

     修改wedsocket服务代码如下

    再次打开客户端。发现客户端同时连接两个端口成功

    然后我们将聊天内容push给所有连接到8812客户端的用户上。。

    这里注意我们的ports[1],打印一下$_POST可见

    ports[0]是我们的8811端口,ports[1]是我们的8812端口。其中的connection是所有客户端id的集合

客户端上接收到服务器发送的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我感觉我的心情很平静,周围护士美女的声音没有影响我,可画的还是不咋的。 我要求是不是太高了? 难道真要从素描开始?...
    旌城蜗牛阅读 3,978评论 12 19
  • 第一次见到明哥的时候落雨还在上初中。 明哥考上了北京的大学,临行前专门摆了好几桌酒菜为明哥饯行。那也是落雨第一次去...
    Chloe陈阅读 3,304评论 0 2