使用Swoole搭建一个简单的聊天室

效果如图:
在这里插入图片描述
大致思路:

  • 完成 html 静态页面,点击发送按钮可以使用 JavaScript 在页面上添加一条新的消息
  • php 后端建立 webSocket 类,完成 webSocket 服务,监听端口
  • 页面中建立 webSocket 和 php 后端接口连接
  • 发送消息的时候,调用 JavaScript 中 webSocket 的 send 方法,发送数据到后端
  • 后端监听到消息时,返回给所有客户端信息
  • 客户端拿到后端返回的消息在页面上显示

后端建立 WebSocket 时,onMessage 是一个必要的回调方法。它在监听到页面发送消息的时候调用,可以在这个方法里返回给页面数据,其中 connections 是连接迭代器,可以遍历所有的连接,可以用这个属性实现一对多的返回客户端数据:

/**
     * 接收到客户端发送的信息的回调方法
     * @param $serv
     * @param $frame
     */
    public function onMessage($serv, $frame)
    {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";

        //  遍历所有连接的客户端
        foreach($serv->connections as $fd)
        {
            $fd == $frame->fd ? '0' : '1';
            $serv->push($fd, $this->param($frame->data,$fd,$frame->fd));
        }
        //  向发送消息的客户端推送数据
        //  $serv->push($frame->fd, $frame->data);
    }

后端遍历所有连接时,判断当前连接和发起请求的连接是否为同一个,如果是同一个,则新的消息显示在右边。否则,反之。

github地址:https://github.com/ljhe/Chart

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值