我查看了一下手冊(cè),安裝上面的去寫,
1,首先加入分組
$connection->join('group name');
2,向這個(gè)分組廣播信息
$io->to('group name')->emit('event name', $data);
發(fā)覺(jué)只有自己的客戶端收到信息,其他客戶端收不到,只能收到自己的信息,
這個(gè)group name 我寫的是121212 ,如果直接
$io->emit('event name', $data);
所有的客戶端都可以收到的到,但沒(méi)有達(dá)到分組的功能,
請(qǐng)問(wèn)如何什么回事??????????????
?
?
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);//保存每個(gè)房間的用戶的列表
? ?$socket->join($msg);//分房間
?
??$socket->uid=array($msg,$msg,$msg,$msg);
??
?$message=$level.urldecode($msg)."進(jìn)入房間";
? ?$count=isset($roomToUserNameameList)?count($roomToUserNameameList):0;
? ?
//對(duì)房間用戶發(fā)送消息
? **?$io->to($msg)->emit('login_leave_room',array("message"=>$message,"onlineUserNameList"=>$roomToUserNameameList,'count'=>$count));**
? ?
}
js頁(yè)面-------------------------------------
<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>
測(cè)試方法:A用戶進(jìn)入房間自己會(huì)彈出OK,B用戶進(jìn)入房間,B會(huì)彈出OK,A用戶不會(huì)彈出OK,但是不是為什么過(guò)了一會(huì)刷新A用戶,兩者都會(huì)彈出Ok,但刷新B用戶,只有B用戶自己會(huì)彈出OK
所以有點(diǎn)困惑,如果直接$io->emit()就正常了,所以、????
?
已經(jīng)解決了,是我有些代碼寫錯(cuò)了,是按照你寫的,非常感謝?。?!還有一點(diǎn),就是手機(jī)瀏覽,手機(jī)黑屏?xí)詣?dòng)斷開socket服務(wù)器的?
@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
小程序報(bào)錯(cuò): Error during WebSocket handshake: Unexpected response code: 404
請(qǐng)問(wèn)問(wèn)題???