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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录