我查看了一下手冊,安裝上面的去寫,
1,首先加入分組
$connection->join('group name');
2,向這個分組廣播信息
$io->to('group name')->emit('event name', $data);
發(fā)覺只有自己的客戶端收到信息,其他客戶端收不到,只能收到自己的信息,
這個group name 我寫的是121212 ,如果直接
$io->emit('event name', $data);
所有的客戶端都可以收到的到,但沒有達到分組的功能,
請問如何什么回事??????????????
?
?
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=array('userid'=>$msg,'username'=>$msg,'level'=>$msg);//保存每個房間的用戶的列表
? ?$socket->join($msg);//分房間
?
??$socket->uid=array($msg,$msg,$msg,$msg);
??
?$message=$level.urldecode($msg)."進入房間";
? ?$count=isset($roomToUserNameameList)?count($roomToUserNameameList):0;
? ?
//對房間用戶發(fā)送消息
? **?$io->to($msg)->emit('login_leave_room',array("message"=>$message,"onlineUserNameList"=>$roomToUserNameameList,'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()就正常了,所以、????
?
已經解決了,是我有些代碼寫錯了,是按照你寫的,非常感謝?。?!還有一點,就是手機瀏覽,手機黑屏會自動斷開socket服務器的?
@1:nginx做反向代理
location /wss
{
proxy_pass http://127.0.0.1:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
在nginx配置如上
小程序連接url:wss://xxxx.com/wss
小程序報錯: Error during WebSocket handshake: Unexpected response code: 404
請問問題???