要在Swoole中创建WebSocket接口,可以使用WebSocket\Server
类,具体步骤如下:
- 创建
WebSocket\Server
对象并设置相关参数,如监听地址和端口号、运行模式、进程数量、事件回调方法等等。
$server = new \Swoole\WebSocket\Server("0.0.0.0", 9501);
// 设置运行模式为守护进程模式
$server->set([
'daemonize' => true,
]);
// 设置进程数量为4个
$server->set([
'worker_num' => 4,
]);
// 设置回调事件方法
$server->on('open', function (\Swoole\WebSocket\Server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (\Swoole\WebSocket\Server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
- 启动WebSocket服务器并监听客户端连接请求。
$server->start();
完整示例代码:
$server = new \Swoole\WebSocket\Server("0.0.0.0", 9501);
// 设置运行模式为守护进程模式
$server->set([
'daemonize' => true,
]);
// 设置进程数量为4个
$server->set([
'worker_num' => 4,
]);
// 设置回调事件方法
$server->on('open', function (\Swoole\WebSocket\Server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (\Swoole\WebSocket\Server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
// 启动WebSocket服务器并监听客户端连接请求
$server->start();
这样就可以在本地启动一个WebSocket服务器并监听9501端口,客户端可以通过访问 ws://localhost:9501
连接到这个WebSocket服务器。