swoole的websocket 部分怎么通知全部在线用户?求助
本文介绍了swoole的websocket 部分怎么通知全部在线用户?求助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
下面是我遍历发送消息,总觉得这样做是不对的,但是看手册又找不到发送所有成员的函数,求助
$server = new swoole_websocket_server("0.0.0.0", 9502);
$server->set(array(
//'worker_num' => 4,
'daemonize'=>1
));
$server->on('open', function (swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
$_SESSION['group'][$request->fd]=$request->fd;
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$arr=array_unique($_SESSION['group']);
$data=json_decode($frame->data,true);
if (is_array($arr)){
foreach ($arr as $key=>$row){
$server->push($row, json_encode(array('name'=>$data['name'],'type'=>$data['type'],'info'=>$data['info'])));
}
}else{
$server->push($frame->fd, "this is server");
}
});
$server->on('close', function ($ser, $fd) {
unset($_SESSION['group'][$fd]);
echo "client {$fd} closed\n";
});
$server->start();
解决方案
foreach($serv->connections as $fd)
{
$serv->push($fd, "hello\n");
}
这篇关于swoole的websocket 部分怎么通知全部在线用户?求助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文