phpsocket.io如何向一个组广播?

我查看了一下手册,安装上面的去写,
1,首先加入分组
$connection->join('group name');

2,向这个分组广播信息
$io->to('group name')->emit('event name', $data);

发觉只有自己的客户端收到信息,其他客户端收不到,只能收到自己的信息,
这个group name 我写的是121212 ,如果直接
$io->emit('event name', $data);

所有的客户端都可以收到的到,但没有达到分组的功能,
请问如何什么回事??????????????
 
 
已邀请:

walkor

赞同来自:

贴所有代码,及测试方法

计算机爱好者 - 90爱好者

赞同来自:

server.php
$io = new SocketIO(3120,$context);
$io->on('connection', function($socket)use($io){
     $socket->addedUser=false;
     
     //登录链接
   $socket->on("login",function($msg)use($socket,$io,){
    global $roomToUserNameameList;
   $socket->addedUser=true;
   $roomToUserNameameList[$msg['roomid']][$msg['userid']]=array('userid'=>$msg['userid'],'username'=>$msg['username'],'level'=>$msg['level']);//保存每个房间的用户的列表
   $socket->join($msg['roomid']);//分房间
 
  $socket->uid=array($msg['roomid'],$msg['userid'],$msg['username'],$msg['level']);
  
 $message=$level.urldecode($msg['username'])."进入房间";
   $count=isset($roomToUserNameameList[$msg['roomid']])?count($roomToUserNameameList[$msg['roomid']]):0;
   
//对房间用户发送消息
   $io->to($msg['roomid'])->emit('login_leave_room',array("message"=>$message,"onlineUserNameList"=>$roomToUserNameameList[$msg['roomid']],'count'=>$count));
   
}
 
js页面-------------------------------------
<script>
 var socket= io("https://xxxxxxx:3120",{ 'reconnect': true });
socket.emit("login",{'username':encodeURI(userInfo.username),'userid':userInfo.userid,'level':userInfo.level,'roomid':roomInfo.roomid,'roomtype':'live'});
 
socket.on("login_leave_room",function(msg){
 
//用户用户列表
alert("OK");     
});
</script>
 
测试方法:A用户进入房间自己会弹出OK,B用户进入房间,B会弹出OK,A用户不会弹出OK,但是不是为什么过了一会刷新A用户,两者都会弹出Ok,但刷新B用户,只有B用户自己会弹出OK
所以有点困惑,如果直接$io->emit()就正常了,所以、????
 

walkor

赞同来自:

代码太乱了,没法看。
我觉得是业务逻辑问题,有可能是roomid传错了。
 
重新建立一个文件单独测试你说的问题,
业务逻辑里就这2个
$connection->join('121212');
$io->to('121212')->emit('event', [123]);
有问题再贴出你的代码
 
 

计算机爱好者 - 90爱好者

赞同来自:

已经解决了,是我有些代码写错了,是按照你写的,非常感谢!!!还有一点,就是手机浏览,手机黑屏会自动断开socket服务器的?

要回复问题请先登录注册