2015-03-19 89 views
0

我测试的应用程序的客户端/服务器连接依赖于Node.js 0.12.0和socket.io 0.9.6。Socket.io socket.emit()*随机*不发射在同一台计算机和浏览器

在客户端简单:

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

,并在服务器端:

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

,当我在本地测试这个程序没有问题。

当我在网上测试,该socket.emit();会随机无法在同一台电脑和浏览器,即在工作时,我重装我的网页我会看到“活跃”在我的日志,然后我重装后什么也看不见,重载/什么,重新加载/没有,重新加载/“活动”等...

任何想法,为什么这会发生在同一台计算机和相同的浏览器?

回答

0

我的问题是我的电脑上安装了Avast,我强制websocket通信,并且Avast阻止websockets(尝试禁用Avast并查看它是否能解决您的问题)。

的问题已报告超过五年前的avast但显然一切都没有改变:https://forum.avast.com/index.php?topic=68270.0

解决方案是工作最适合我:

  • 使用TLS/SSL(如果你的主机您在Heroku上的应用程序只是https://..访问你的应用程序)

其他可能的解决方案:

  • 使用XHR轮询代替的WebSocket:

    io.set( '传输',[ 'XHR轮询']);

,但我的应用程序XHR轮询太慢

注意,在最后一个版本的socket.io xhr-polling是默认启用的,所以这个bug应该更少发生。

相关帖子#1:

Socket.io 0.7.9 connection issues

Socket IO WebSocket requests blocked by corporate firewalls.