0

我的 socket.io 有问题,至少我认为,我的客户端代码中的函数没有被调用socket.on('connect', onsocketConnected);

但是,如果我提出一个条件,例如:

if(socket.connect) {
    onsocketConnected();
}  

然后我的函数被调用。我也刚刚意识到,如果我这样写
socket.on('connect', onsocketConnected());,我的函数就会被正确调用。我的问题是,在从客户端连接到服务器时,连接是自动提供给客户端的值吗?查看https://socket.io/docs/client-api/上的文档,它指出它应该作为socket.on(event, callback function).
回调函数中的括号是否总是需要它才能工作?因为看起来他们在没有括号的情况下在其他地方工作。非常感谢任何资源或文档指针。

4

1 回答 1

0

为了调用函数(回调或其他),虽然该函数没有任何参数,但您仍应使用(). IE:onsocketConnected();

socket.on('connect', onsocketConnected);不起作用的原因是因为您()在调用函数时丢失了。
您所做的只是将变量/对象(不存在)传递onsocketConnectedsocket.on方法,而不是传递函数。

使用它的正确方法,就像你之后输入的那样:socket.on('connect', onsocketConnected());

关于 JS 函数参数的文档:http: //devdocs.io/javascript/functions/arguments

于 2018-05-12T10:18:46.223 回答