如果任何人都可以帮助解决我的问题,则不确定我是否缺少阻止I / O的基本知识,基本上在下面的代码中,推送是在一个客户端中逐步进行的,这正是我所期望的,但是如果我有两个或多个客户端,“ for睡眠循环”一次执行一个客户端。我希望如果我打开两个或多个客户端,值会同时在所有客户端中显示。我只是不确定在体系结构上如何在Swoole中组织这种代码。
$server = new \swoole_websocket_server("0.0.0.0", 8080, SWOOLE_BASE);
$server->on('message', function (\swoole_websocket_server $_server, \swoole_websocket_frame$frame) {
for($idx=0; $idx<10; $idx++) {
// pretend we're doing some blocking process like executing an sql
sleep(rand(1,2));
$_server->push($frame->fd, rand(1,10));
}
});
$server->on('open', function (\swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->start();