【问题标题】:How to emit to a specific socket with a callback?如何通过回调发送到特定的套接字?
【发布时间】:2018-05-01 18:10:26
【问题描述】:

您好,我想发送到我存储在变量中的特定套接字:

 socket.on('register', () => {
     clintToEmitTo = socket.id;
     console.log('clint To Emit To Socket ID ', clintToEmitTo);
 });

我知道要发送到特定的套接字,我需要执行以下操作:

 socket.to(clintToEmitTo).emit('getName', (response) => {
    console.log(response);
 });

但是,我希望能够使用回调或确认,这就是我得到的:

(node:1956) UnhandledPromiseRejectionWarning: 未处理的承诺 拒绝(拒绝 id:2):错误:不支持回调 广播(节点:1956)[DEP0018]

注意:emit 事件可以由另一个客户端事件触发,这就是我没有在注册事件上添加回调的原因

【问题讨论】:

  • emit 期望某个对象作为第二个参数,您传递的是function,这可能是问题吗?尝试将函数回调作为第三个参数。
  • 这没有什么区别,你仍然会得到同样的错误。你是什​​么意思(将函数回调作为第三个参数)
  • socket.to(clintToEmitTo).emit('getName', '', (response) => { console.log(response); });
  • 是的,出现同样的错误

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


【解决方案1】:

只是发送一些东西? :

  socket.to(clintToEmitTo).emit('getName', "something");

【讨论】:

  • 没有区别,如果你有回调,你仍然会得到同样的错误。 socket.to(clintToEmitTo).emit('getName', "something") 或 socket.to(clintToEmitTo).emit('getName') 可以正常工作,但您将无法获得回调
猜你喜欢
  • 2020-03-19
  • 2016-01-31
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2018-01-22
相关资源
最近更新 更多