【问题标题】:Socket.io 0.7.9 connection issuesSocket.io 0.7.9 连接问题
【发布时间】:2011-10-28 05:46:22
【问题描述】:

我正在尝试升级到 socket.io 0.7.9 并遇到了问题。

我使用了来自 socket.io 主页的基本示例。我的服务器是:

var http    = require('http'),
    url     = require('url'),
    https   = require('https'),
    fs      = require('fs'),
    crypto  = require('crypto'),
    io      = require('../'),
    sys     = require(process.binding('natives').util ? 'util' : 'sys'),
    server = http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end();
    });

server.listen(80,"[MYIP]");
var io = io.listen(server), buffer=[];

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

它在某些计算机上连接正常,但在其他计算机上连接不正常。在所有浏览器中都是一样的。

有人知道为什么会这样吗?可能有一些本地网络问题导致这种情况吗?

更新 似乎无法从他们的计算机连接的人正在运行带有似乎阻止连接的实时网络防护罩的防病毒软件。当他们关闭它时,它在某些浏览器上连接正常......

【问题讨论】:

  • Socket.io 在 chrome 14 和 15 上存在问题,因为它们更改了 websocket 版本。就我个人而言,我已经关闭了 websocket 传输,以便在事情解决时让事情可靠地工作。
  • 我在 OS 10.6.8 上测试了您的演示 Safari 的 websocket 性能良好,Firefox 的 xhr 性能良好,Opera 的 jsonp 性能良好,Chrome 15 与 websocket 的性能比较差。 (在 Chrome 操作系统上相同)
  • 它似乎影响了使用 Avast 杀毒软件的用户,该杀毒软件因阻止 websockets 而臭名昭著。 Avast 不喜欢端口 80,所以我必须将其更改为其他内容。感谢您的帮助@generalhenry。

标签: node.js websocket socket.io


【解决方案1】:

过去两个月我一直在使用 socket.io 和 node.js,像你这样的一些问题也发生在我身上。

防火墙通常是端口 80 的问题,尤其是在与 DNS 一起使用时(例如在公司网络中),因为它们会与套接字包的标头进行调和。一种解决方法可能是尝试另一个端口。 我的应用程序在端口 80 上有一个 apache 服务器,我的 websocket 在端口 843 上,在 Firefox 和 Chrome 上一切正常。

您可以使用 xhr-polling 后备选项通过添加此脚本绕过此类错误:

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

xhr-polling 提供的实时性能较差,但非常可靠,适用于大多数浏览器和网络配置。

希望对你有帮助!

【讨论】:

猜你喜欢
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多