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

Javascript socket.emit()在创建套接字对象后立即使用时不起作用,但在单击事件时调用它时起作用?,javascript,socket.io,Javascript,Socket.io,我有一个问题,当我实例化套接字对象之后,在套接字对象上调用socket.emit()时,它什么都不做。 就像在React应用程序加载时从构造函数调用套接字发出函数一样。 但是,当我将相同的emit附加到单击事件(如单击按钮)时,它会正常工作。这是因为socketio模块中的某个异步进程吗 例如: socket = io(<someurl>); socket.emit('something') // this does not work socket=io(); socket.emi

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

例如:

socket = io(<someurl>);
socket.emit('something') // this does not work
socket=io();
socket.emit('something')//这不起作用

但是在click事件中调用相同的东西会触发emit。

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

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

socket.on('connect', () => {
    socket.emit('something');
});
这是一个例子