【发布时间】:2014-04-24 21:26:26
【问题描述】:
我有一个 node.js/socket.io webapp,它当前正在正常工作,轮询 API 并使用发出的结果填充 html 页面。
我的问题是多人需要使用它,我想将他们的实例分开,这样每个人都只会收到他们的查询结果。
现在,当任何人使用该网站时,它会返回另一个可能也在使用该网站的用户的结果。 我试图用这种方法解决这个问题:
var clients = {};
io.sockets.on('connection', function(socket){
console.log("this is "+socket.id);
clients.id = socket.id;
})
io.sockets.socket(clients.id).emit('progress',{info:listing});
当然,这会被每个登录网站的新用户所取代,因此发送给原始用户的所有内容现在都被发送给新用户。
我想知道是否有任何内置函数可以解决这个问题,或者我是否应该继续使用另一个持久性存储。
任何帮助将不胜感激。
编辑
通过将套接字对象存储在 express.sessionStore 而不仅仅是在程序中。
io.sockets.on(function(socket){
request.sessionStore.socket = socket;
})
上面的代码现在可以工作并且只发送给事件发起者。
【问题讨论】:
-
为什么不使用socket.emit()?它只会发送给触发事件的客户端
-
@MOmary 这是我的问题 - 我现在发布修订版。
标签: javascript node.js sockets socket.io