【问题标题】:Socket IO WebSocket requests blocked by corporate firewalls.Socket IO WebSocket 请求被公司防火墙阻止。
【发布时间】:2013-09-22 00:44:54
【问题描述】:

从企业防火墙/代理后面使用 socket.io 模块的解决方案是什么?这是我正在使用的代码。

// setup express server
var app = express()
var serv = http.createServer(app);
serv.listen(80);

// setup socket io - listens in on express store as well for sessions
var io = require('socket.io').listen(serv);

【问题讨论】:

  • 你确定它真的被阻止了吗?看起来你在这里有错误 - 在附加 socket.io 之前监听服务器可能会出错。参考这里的例子:socket.io/#how-to-use 同样,socket.io 会尝试使用 WebSockets,它们最初只是 HTTP,所以防火墙通常无法识别它们。为什么你认为它是防火墙而不是别的东西?请发布更多数据以及您认为它被阻止的确切原因。
  • 这是防火墙阻止的东西,因为我没有看到任何错误,是的,我将代码更改为首先附加套接字。

标签: node.js express websocket socket.io


【解决方案1】:

我遇到了类似的问题,我最终完全禁用了 websocket:

io.configure('production', function(){
  io.set('transports', ['xhr-polling']);
});

XHR 轮询在任何地方都有效,但对每个人来说都有更大的开销(即使只有 5% 的用户真正需要它)。

好消息是,即将推出的 1.0 版 Socket.IO 将解决这个问题:

与之前的 Socket.IO 内核不同,它总是先建立一个长轮询连接,然后尝试升级到更好的传输方式,并在侧面进行“测试”。

在这里查看:https://github.com/LearnBoost/engine.io

【讨论】:

  • 当我只使用 xhr-polling 时,由于某种原因,我无法获得实时更新。因此,用户需要刷新页面才能看到最新的更改。使用 websockets,我可以实现实时更新。
  • 这很奇怪,xhr-polling 和 websocket 的行为方式应该相同。您能否验证 XHR 连接是否已在控制台中正确建立?
  • 它在 localhost 上按预期完美运行,但当我部署到 ec2 (EBS) 上的远程框时无法按预期运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多