利用swoole的websocket编写简单聊天室demo

服务器代码:

on('open', function (swoole_websocket_server $server, $request) use (&$clientFds) {
   # echo "server: handshake success with fd{$request->fd}\n";
   # 将所有客户端连接标识,握手成功后保存到数组中
   $clientFds[] = $request->fd;
});
# 收到消息 触发回调函数
$server->on('message', function (swoole_websocket_server $server, $frame) use (&$clientFds) {
   # echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
   # $server->push($frame->fd, "this is server");
   # 当有用户发送信息,发送广播通知所有用户
   foreach ($clientFds as $fd) {
      $server->push($fd, $frame->data);
   }
});
# 关闭连接 触发回调函数
$server->on('close', function ($ser, $fd) use (&$clientFds) {
   # echo "client {$fd} closed\n";
   # 关闭会话 销毁标识fd
   # 根据value 去数组中找对应的key
   $res = array_search($fd, $clientFds, true);
   unset($clientFds[$res]);
});
# 启动websocket服务
$server->start();

前端html代码:





    
    WebSocket聊天室



    聊天窗口:
    

利用swoole的websocket编写简单聊天室demo_第1张图片

利用swoole的websocket编写简单聊天室demo_第2张图片

虚拟机中确保已经有了swoole环境

启动websocket服务:

利用swoole的websocket编写简单聊天室demo_第3张图片

页面显示:

利用swoole的websocket编写简单聊天室demo_第4张图片

利用swoole的websocket编写简单聊天室demo_第5张图片

当输入名字后,F12查看我们输出的信息,显示的是websocket连接成功。

这时我们多开几个窗口连接我们的websocket服务器。

并输入名字测试,在聊天窗口上观察数据。

利用swoole的websocket编写简单聊天室demo_第6张图片

这样就实现了简单的聊天室demo

你可能感兴趣的:(swoole,php,php,swoole,websocket)