【问题标题】:Send socket data to a specific socket id socket.io将套接字数据发送到特定的套接字 id socket.io
【发布时间】:2017-05-07 08:24:47
【问题描述】:

所以我正在尝试将数据发送给特定用户(特定套接字 ID),我已经尝试过这样做。

io.to(users[steamid].socket).emit('message', {
        type: 'balance',
        balance: row[0].balance
    });

users[steamid].socket 是我存储所有套接字 id 的地方,它只是获取我想要的特定 ID,但是当我这样做时,它第一次工作,但当它再次触发时它不起作用。我不知道我做错了什么。

我触发调用的方式是使用函数,网站有倒计时,当倒计时结束时,它会调用获取获胜者的套接字 id 的函数,然后它会为获胜者提供所需的数据,我想知道为什么这不仅在第一次时有效。

提前致谢。

【问题讨论】:

  • 如果第二次还是不行,那么要么steamid 错误,要么users[steamid].socket 不是正确的socket ID。当这些值不起作用时,您需要进行一些调试来调查这些值。

标签: socket.io


【解决方案1】:

解决问题的一种方法是保存 sockets,而不是 socket ids

如果user.socket 是用户的套接字,则可以这样做

user.socket.emit('message', { ... });

或者在你的例子中

users[steamid].socket.emit('message', { ... });

【讨论】:

  • 我得到一个错误 users[steamid].socket.emit is not a function.
  • @JacobF 那是因为users[steamid].socket 当前包含一个套接字 ID,而不是一个套接字。我在您的问题中看不到那部分代码,但您需要更新设置user.socket 的代码,即执行user.socket = socket 之类的操作而不是user.socket = socket.socketId
  • 那么当我使用 io.to 时它工作得如何完美?由于某种原因它只工作一次..
  • 嘿,你能帮我吗?
猜你喜欢
  • 2018-08-03
  • 2015-08-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多