javascript - socket.emit() 在创建套接字对象后立即使用时不起作用,但在单击事件上调用它时起作用?

标签 javascript socket.io

我有一个问题,当我实例化套接字对象后在套接字对象上调用 socket.emit() 时,它不会执行任何操作。 就像加载 React 应用程序时从构造函数中调用套接字发出函数一样。 但是,当我将相同的发射附加到单击事件(例如单击按钮)时,它可以正常工作。这是因为 socketio 模块内有一些异步进程吗?

例如:

socket = io(<someurl>);
socket.emit('something') // this does not work

但是在点击事件中调用相同的东西会触发发射。

最佳答案

是的。套接字尚未连接,即使只是几毫秒。尝试在连接时发送初始发射:

const socket = io(); // with your parameters

socket.on('connect', () => {
    socket.emit('something');
});

这是一个list of events .

关于javascript - socket.emit() 在创建套接字对象后立即使用时不起作用,但在单击事件上调用它时起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577592/

相关文章:

javascript - Node.js - 连接池

socket.io - 需要未知模块 "socket.io-client/socket.io"

javascript - NowJS - 客户端/浏览器通信(无需联系 "everyone")

javascript - 如何在 Javascript 中让 AM/PM 与时间一起正确工作

javascript - React - 我的待办事项应用程序中没有调用 mapStateToProps 函数

javascript - 将数组添加到关联数组/对象

node.js - Node/Socket.io - 如何每 x 分钟发出一个函数/数据

javascript - window.location.href 附加而不是替换

javascript - 如何存储单击按钮的次数?

jquery - Socket.io 不改变 HTML