Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在使用socket.io加入房间后获得其他用户的响应_Javascript_Node.js_Socket.io_Socket.io 1.0 - Fatal编程技术网

Javascript 如何在使用socket.io加入房间后获得其他用户的响应

Javascript 如何在使用socket.io加入房间后获得其他用户的响应,javascript,node.js,socket.io,socket.io-1.0,Javascript,Node.js,Socket.io,Socket.io 1.0,我对socket.io有一个疑问。我有两种类型的用户,即e-admin和client。第一种管理员将创建用户ID并加入聊天室。我需要用户何时加入聊天室,管理员应该得到响应,并需要相关帮助 我的工作代码如下 function videoBroadCasting(uType){ var messageGateWay; if(uType=='admin'){ var userid = getRandomString(); $('#styled').val

我对socket.io有一个疑问。我有两种类型的用户
,即e-admin和client
。第一种管理员将创建用户ID并加入聊天室。我需要用户何时加入聊天室,管理员应该得到响应,并需要相关帮助

我的工作代码如下

function videoBroadCasting(uType){
    var messageGateWay;
    if(uType=='admin'){
        var userid = getRandomString();
        $('#styled').val('http://localhost:8888/video?usertype=client & id='+userid);
        messageGateWay=io('http://localhost:8888/?roomid='+userid+'usertype='+uType);
    }
    if(uType=='user'){
        messageGateWay=io('http://localhost:8888/?usertype='+uType);
    }
    messageGateWay.on('connect',function(){
        console.log('socket get connected');

    });
}
function getRandomString() {
   return (Math.random() * new Date().getTime()).toString(36).replace(/\./g, '');
}
function getQuery(key){
        var temp = location.search.match(new RegExp(key + "=(.*?)($|\&)", "i"));
        if(!temp) return;
        return temp[1];
}
server.js:

我的客户端代码如下所示

function videoBroadCasting(uType){
    var messageGateWay;
    if(uType=='admin'){
        var userid = getRandomString();
        $('#styled').val('http://localhost:8888/video?usertype=client & id='+userid);
        messageGateWay=io('http://localhost:8888/?roomid='+userid+'usertype='+uType);
    }
    if(uType=='user'){
        messageGateWay=io('http://localhost:8888/?usertype='+uType);
    }
    messageGateWay.on('connect',function(){
        console.log('socket get connected');

    });
}
function getRandomString() {
   return (Math.random() * new Date().getTime()).toString(36).replace(/\./g, '');
}
function getQuery(key){
        var temp = location.search.match(new RegExp(key + "=(.*?)($|\&)", "i"));
        if(!temp) return;
        return temp[1];
}

客户端加入会议室后,管理员应收到一个通知。请帮助我完成此操作。

一个简单的解决方案是在管理员加入会议室时将管理员的套接字对象保存到服务器中。然后,当其他用户加入房间时,只需从admin/admins向该套接字发送一条消息。只要保持一个阵列更新与管理员实际上登录在房间里

比如:

var socketAdmin = {};
io.on('adminJoins',function(socket){
  socketAdmin = socket;
  roomid=socket.handshake.query.roomid;
  var usertype=socket.handshake.query.usertype;
  socket.join(roomid);
});
io.on('clientJoins',function(socket){
  roomid=socket.handshake.query.roomid;
  socketAdmin.emit('newClient', {socketClient: socket, roomId: roomid};
  var usertype=socket.handshake.query.usertype;
  socket.join(roomid);
});

在本例中,客户端发送一条消息“adminJoins”,如果您是管理员,或“clientJoins”,如果您是客户端,则可以通过检查您的uType变量来发送该消息。如果有新客户加入房间,管理员将收到一条带有客户机套接字和房间ID的“newClient”消息(仅举一个例子)。

一个简单的解决方案是,当管理员加入房间时,从服务器中的管理员处保存套接字对象。然后,当其他用户加入房间时,只需从admin/admins向该套接字发送一条消息。只要保持一个阵列更新与管理员实际上登录在房间里

比如:

var socketAdmin = {};
io.on('adminJoins',function(socket){
  socketAdmin = socket;
  roomid=socket.handshake.query.roomid;
  var usertype=socket.handshake.query.usertype;
  socket.join(roomid);
});
io.on('clientJoins',function(socket){
  roomid=socket.handshake.query.roomid;
  socketAdmin.emit('newClient', {socketClient: socket, roomId: roomid};
  var usertype=socket.handshake.query.usertype;
  socket.join(roomid);
});

在本例中,客户端发送一条消息“adminJoins”,如果您是管理员,或“clientJoins”,如果您是客户端,则可以通过检查您的uType变量来发送该消息。如果有新客户加入房间,管理员会收到一条带有客户机套接字和房间ID的“newClient”消息(仅举一个例子)。

添加了一些代码来更好地解释我自己,希望对SOK有所帮助,我将尝试此操作,稍后再通知您。socket将仅保存来自客户端/管理员的消息。它将如何
roomid=socket.handshake.query.roomid
。添加了一些代码来更好地解释我自己,希望对您有所帮助。Sok,我会尝试一下,稍后再通知您。socket将只保存来自client/admin的消息。如何
roomid=socket.handshake.query.roomid