在socket.on上没有调用事件('connect',event)

时间:2018-05-12 06:01:56

标签: javascript sockets socket.io

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

但是,如果我把条件如:

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

然后调用我的函数。我也意识到如果我把它写成像 socket.on('connect', onsocketConnected());我的函数被正确调用。我的问题是,在从客户端到服务器的连接上,是否连接了一个自动提供给客户端的值?查看https://socket.io/docs/client-api/处的文档,它指出它应该以{{1​​}}的形式工作 回调函数中的括号是否始终需要它才能工作?因为看起来他们在没有括号的情况下在其他地方工作。任何资源或文档指针都非常感谢。

1 个答案:

答案 0 :(得分:0)

为了调用函数(回调或其他),当函数没有得到任何参数时,你仍然应该用()来调用它。 I.E:onsocketConnected () ;

socket.on('connect', onsocketConnected);无效的原因是因为您在调用函数时缺少()
你正在做的是将变量/对象(不存在)onsocketConnected传递给socket.on方法,而不是传递功能

使用它的正确方法与您之后输入的一样:socket.on('connect', onsocketConnected());

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