nodejs socket io不能调用undefined的emit。原因是什么?

时间:2013-11-16 06:56:56

标签: javascript socket.io node.js-client

我正在使用nodejs和socket io。该代码的基本目的是从服务器请求数据并将其发布在客户端网站上。

我让它每隔10秒就会从客户端向服务器请求数据,并且当收到数据时,它会显示在网站上。

问题在于,大多数情况下,从服务器接收数据并将其发送到客户端可以正常工作,但偶尔会关闭并抛出一个错误,指出套接字方法发出的错误是未定义的。我相信这意味着不再定义客户端。

服务器代码:

sockets[to].emit('cm0101', {soCase : '2', soData : ret } );

这是获取TypeError的代码:无法调用未定义的方法'emit'。

我感到困惑的是,它有效10次,但偶尔会失败(大概是因为客户因任何原因关闭了。但是没有理由/确定客户关闭的情况)

其他人有同样的问题吗?有谁知道为什么会这样?知道这个错误的所有可能原因将帮助我找到为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

我假设你之前没有检查sockets[to]。 您应该像这样编写代码:

var socketTo = sockets[to];
if ( socketTo ) {
  sockets[to].emit('cm0101', {soCase : '2', soData : ret } );
}