PHP WebSocket 实战:使用 Swoole 扩展构建实时通信
WebSocket 是一种基于 TCP 协议的全双工通信协议,它可以在客户端和服务器之间建立一个持久化的连接,实现实时双向数据传输。在 PHP 中,可以使用 Swoole 扩展来实现 WebSocket 通信。
以下是一个使用 Swoole 扩展实现 WebSocket 的示例代码:
// 创建 WebSocket 服务器
$server = new swoole_websocket_server('0.0.0.0', 9501);
// 监听 WebSocket 连接事件
$server->on('open', function (swoole_websocket_server $server, $request) {
echo 'client ' . $request->fd . ' connected' . PHP_EOL;
});
// 监听 WebSocket 消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo 'received message: ' . $frame->data . PHP_EOL;
// 广播消息给所有连接的客户端
foreach ($server->connections as $fd) {
if ($server->isEstablished($fd)) {
$server->push($fd, $frame->data);
}
}
});
// 监听 WebSocket 关闭事件
$server->on('close', function (swoole_websocket_server $server, $fd) {
echo 'client ' . $fd . ' closed' . PHP_EOL;
});
// 启动 WebSocket 服务器
$server->start();
在上面的代码中,我们创建了一个 WebSocket 服务器,并监听了三个事件:'open'、'message' 和 'close'。当客户端连接到服务器时,会触发 'open' 事件,我们可以在这里记录连接的客户端信息。当客户端发送消息到服务器时,会触发 'message' 事件,我们可以在这里处理消息,然后将消息广播给所有连接的客户端。当客户端关闭连接时,会触发 'close' 事件,我们可以在这里清理客户端信息。
在启动 WebSocket 服务器之前,需要安装 Swoole 扩展:
$ pecl install swoole
然后在命令行中启动 WebSocket 服务器:
$ php websocket_server.php
现在,我们可以使用 WebSocket 客户端连接到服务器,发送消息并接收广播消息了。
原文地址: https://www.cveoy.top/t/topic/oKzL 著作权归作者所有。请勿转载和采集!