本篇让我们先用一段示例代码开路:
<?php
Co\run(function () {
$server = new Co\Http\Server('0.0.0.0', 9501, false);
$server->handle('/', function ($request, $ws) {
$ws->upgrade();
while (true) {
$frame = $ws->recv();
if ($frame === '') {
$ws->push("bye bye");
$ws->close();
break;
} else if ($frame === false) {
echo "error : " . swoole_last_error() . "\n";
break;
} else {
if ($frame->data == 'close' || get_class($frame) === Swoole\WebSocket\CloseFrame::class) {
$ws->push("bye bye");
$ws->close();
return;
}
$ws->push("Hello {$frame->data}!");
$ws->push("How are you, {$frame->data}?");
}
}
});
$server->start();
});

本文通过示例代码介绍了如何在Swoole中使用协程实现HTTP服务器,并处理WebSocket连接。当客户端发起WebSocket连接时,服务器会调用回调函数进行消息收发。`upgrade()`方法用于发送WebSocket握手,`recv()`接收消息帧,`push()`发送数据帧,而`close()`关闭连接。在回调函数内部,所有操作都在同一个协程中进行,可以安全地使用全局变量。
最低0.47元/天 解锁文章
942

被折叠的 条评论
为什么被折叠?



