我正在使用nodejs和socket io。该代码的基本目的是从服务器请求数据并将其发布在客户端网站上。
我让它每隔10秒就会从客户端向服务器请求数据,并且当收到数据时,它会显示在网站上。
问题在于,大多数情况下,从服务器接收数据并将其发送到客户端可以正常工作,但偶尔会关闭并抛出一个错误,指出套接字方法发出的错误是未定义的。我相信这意味着不再定义客户端。
服务器代码:
sockets[to].emit('cm0101', {soCase : '2', soData : ret } );
这是获取TypeError的代码:无法调用未定义的方法'emit'。
我感到困惑的是,它有效10次,但偶尔会失败(大概是因为客户因任何原因关闭了。但是没有理由/确定客户关闭的情况)
其他人有同样的问题吗?有谁知道为什么会这样?知道这个错误的所有可能原因将帮助我找到为什么会发生这种情况。
答案 0 :(得分:0)
我假设你之前没有检查sockets[to]
。
您应该像这样编写代码:
var socketTo = sockets[to];
if ( socketTo ) {
sockets[to].emit('cm0101', {soCase : '2', soData : ret } );
}