Socket.io socket.emit()*随机*不在同一台计算机和浏览器上发出

时间:2015-03-19 11:29:51

标签: node.js websocket socket.io

我正在测试依赖于Node.js 0.12.0和socket.io 0.9.6的应用程序的客户端/服务器连接。

在客户端一个简单的:

window.onfocus = function () { 
       socket.emit('active');
};

并在服务器端:

client.on('active', function (){           
    console.log('active');
}); 

我在本地测试此应用时没问题。

当我在线测试时,socket.emit();会随机无法在同一台计算机和浏览器上工作,即当我重新加载页面时,我会看到"活动"在我的日志中,然后我重新加载并看不到任何东西,重新加载/没有,重新加载/没有,重新加载/"活动"等...

知道为什么会在同一台计算机和同一浏览器上发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

我的问题是我在我的计算机上安装了Avast,我正在强制进行websocket通信,并且Avast阻止了websockets(尝试禁用Avast并查看它是否解决了您的问题)。

五年多前已向Avast报告过此问题,但显然没有任何变化:https://forum.avast.com/index.php?topic=68270.0

最适合我的解决方案:

  • 使用TLS / SSL(如果您在Heroku上托管您的应用,只需使用https://..访问您的应用。)

其他可能的解决方案:

  • 使用xhr-polling代替websocket:

    io.set(' transports',[' xhr-polling']);

但对于我的应用程序xhr-polling太慢了

请注意,在socket.io的最后一个版本中,默认情况下启用xhr-polling,因此很少发生此错误。

相关的Stackoverflow帖子:

Socket.io 0.7.9 connection issues

Socket IO WebSocket requests blocked by corporate firewalls.