Socket.io 客户端切换到 xhr-polling 时出错

Posted

技术标签:

【中文标题】Socket.io 客户端切换到 xhr-polling 时出错【英文标题】:Socket.io client switching to xhr-polling with error 【发布时间】:2013-10-09 08:33:05 【问题描述】:

我正在使用 Nodejs 和 Socket.io 运行聊天服务器,在某些浏览器中一切正常并使用本机 websockets。

但在某些情况下,它使用 xhr-polling 会出现问题。

萤火虫输出:

GET http://domain:8080/socket.io/1/?t=time
GET http://domain:8080/socket.io/1/xhr-polling/X_mBol8OqjbULLXozLc?t=time 200 OK 2m
Error: The connection to ws://domain:8080/socket.io/1/websocket/dsEWQdsaDWQEcHTR was interrupted while the page was loading
...yep.name="flashsocket",c.prototype.open=function()var a=this, c=arguments; return...
GET http://domain:8080/socket.io/1/xhr-polling/X_mBol8OqjbULLXozLc?t=time 200 OK 20s
GET http://domain:8080/socket.io/1/xhr-polling/X_mBol8OqjbULLXozLc?t=time 200 OK 20s

萤火虫截图:http://tinypic.com/view.php?pic=23r5pvb&s=5

客户信息:

没有防病毒和代理应用程序正在运行 客户正在使用现代 Bowser 我正在使用这段代码来配置socket.io

socket.io 配置:

io.configure(function()
    io.enable('browser client minification');
    io.enable('browser client etag');
    io.enable('browser client gzip');
    io.set('transports', [
        'websocket'
        , 'flashsocket'
        , 'htmlfile'
        , 'xhr-polling'
        , 'jsonp-polling'
    ]);
);

【问题讨论】:

您的路由器是否在路由器设置页面中启用了 DynamicNAT/LRU 或 NAT 过滤? @PubNub 如何在 CentOS 中检查路由器设置? iptables? 可能不是设置参数,因为您必须了解一般硬件限制。 【参考方案1】:

与 ws 的连接://domain:8080/socket.io/1/websocket/dsEWQdsaDWQEcHTR 在页面加载时中断

这是解决问题的关键,我认为它无法返回 xhr-polling,因为通过 ws 连接时出错。

【讨论】:

以上是关于Socket.io 客户端切换到 xhr-polling 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 问题:使用“xhr-polling”初始化大量客户端

如何在 Socket.IO 中使用 xhr-polling 存储持久数据?

在 socket.io 中控制来自客户端的心跳超时

Socket.io 1.3.7 忽略选项

Websocket 不能在 heroku 中使用 socket.io

socket.io切换命名空间