【问题标题】:Socket.io: Emit to specified ClientsSocket.io:发送到指定的客户端
【发布时间】: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


【解决方案1】:

这似乎已在另一个线程中得到回答。这个想法是创建一个客户端数组,并将其与某种类型的客户端/用户标识相关联,例如 ID 或名称。

Sending a message to a client via its socket.id

【讨论】:

    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2018-02-13
    • 2014-10-24
    • 2013-05-12
    • 2016-10-19
    相关资源
    最近更新 更多