节点js连接两个套接字,以便检索更容易

时间:2015-09-06 17:56:43

标签: javascript node.js sockets websocket socket.io

目前我正在使用io.emit,我将事件发送给所有连接的用户,在客户端我检查用户i的id是否等于客户端的id然后条件运行我认为它正在制作我的代码杂乱而且有点慢是否有什么我可以做的就像连接然后在一个组中所以当检索它们时我会更容易。

//server side
var id = 1;
io.emit('check',id);

// on client side 
socket.on('check',function(data){
var current_user_login = //getting current user login id by php
if(data == current_user_login) { 
//run some code
}
});

2 个答案:

答案 0 :(得分:1)

如果您想将某些插座放在同一个房间,那么这很容易 一起向所有人广播。试试这个:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.join('group');
  socket.broadcast.to('group').emit('new member');
});

希望这有帮助。

答案 1 :(得分:1)

解决此问题的更好方法是在要发送数据的用户与该用户的套接字之间创建关联,以便只能.emit()到该特定套接字。这比发送给每个人的效率要高得多,特别是当你有很多连接的套接字时。

您必须向我们解释更多关于您如何知道要发送给哪个套接字或用户的信息,以便我们帮助您了解如何在服务器中进行该关联。

socket.io具有“房间”的概念,它是套接字组,使您可以轻松地将套接字放置在特定组中,然后广播到特定的套接字组。

或者,每个套接字都有一个id,每个套接字都可以访问首次建立连接时出现的cookie,这些cookie有时可用于标识要发送给哪个用户。但是,您必须解释如何知道您要向我们发送哪个用户,以帮助您了解如何将其编码到您的服务器中。