【问题标题】:Socket.io socket.emit() *randomly* not emitting on the same computer and browserSocket.io socket.emit() *randomly* 不在同一台计算机和浏览器上发射
【发布时间】:2015-03-19 11:29:50
【问题描述】:

我正在测试依赖于 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(); 将随机无法在同一台计算机和浏览器上运行,即当我重新加载我的页面时,我会在我的日志中看到“活动”,然后我重新加载并什么也看不到,重新加载/什么都没有,重新加载/什么都没有,重新加载/“活动”等......

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

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

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

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

    最适合我的解决方案:

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

    其他可能的解决方案:

    • 使用 xhr-polling 代替 websocket:

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

    但是对于我的应用,xhr-polling 太慢了

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

    相关 Stackoverflow 帖子:

    Socket.io 0.7.9 connection issues

    Socket IO WebSocket requests blocked by corporate firewalls.

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多