javascript - 等待 socket.on ('answerToRequest' ) 可以使用 Socket.io 吗?

标签 javascript node.js websocket socket.io backend

以下情况是否可能?

async function doesSocketAgree(){
    socket.emit('doesOtherSocketAgree', otherSocketId);
    await socket.on('responseDoesSocketAgree', (answer)=>{
      console.log('answer');
});
}

最佳答案

在socket.io中,您可以使用“确认”回调:

async function doesSocketAgree(){
  await new Promise(resolve => {
    socket.emit('doesOtherSocketAgree', otherSocketId, (answer) => {
      resolve(answer);
    });      
  });
}

https://socket.io/docs/#Sending-and-getting-data-acknowledgements

因此您可以使用单个 emit() 并可以触发回调。 这样做的好处是,您不必在每次调用此函数时都注册事件监听器来处理内存泄漏。

关于javascript - 等待 socket.on ('answerToRequest' ) 可以使用 Socket.io 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271984/

相关文章:

javascript - aria-label 和 aria-labelledby 之间的区别

node.js - Express.js 文件上传 : 60s timeouts and HTTP connection timeout errors

node.js - Docker最佳实践nodejs和静态文件

java - 如何在Linux上部署java vertx服务器?

java - WebSockets 或 Http 哪一个用于实时应用程序?

c++ - 处理 websocketpp 连接路径

javascript - 为什么 SetTimeout 代码在clearTimeout之后仍然执行

javascript - GAS 脚本,用于创建带有电子表格数据链接的 HTML 列

javascript - 当我自己编写 window.confirm 代码时如何返回 true 或 false

node.js - 将点几何添加到 Postgresql