【问题标题】:IE and Socket.io compatibilityIE 和 Socket.io 兼容性
【发布时间】:2012-10-11 05:11:38
【问题描述】:

我在这里做了一些聊天示例:http://psitsmike.com/2011/09/node-js-and-socket-io-chat-tutorial/

当我使用 Chrome 和 Firefox 时,一切都像魅力一样。对于 IE9 或 Opera,一些 socket.io 事件没有触发(例如断开连接)或触发太晚,并且数据接收太慢。

我用 npm 方法安装了 node.js 和 socket.io 模块。

请帮忙。

【问题讨论】:

    标签: internet-explorer node.js socket.io opera


    【解决方案1】:

    Socket.IO 最适用于 websocket。在 2012 年之前,大多数浏览器不支持 websockets (source)。

    使用此类浏览器,socket.io 会使用各种轮询方法,但这些方法可能会导致您遇到问题,例如低数据速率和延迟事件(延迟 1-2 分钟触发)。为了解决这个问题,您应该尝试启用 Flash 套接字。

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

    另外,请确保可以从客户端访问闪存策略端口(默认 10843)。

    【讨论】:

    • htmlfile 是 IE 的 ActiveX 方式
    • 当我尝试这个时,io 对象没有 'set' 方法。这是客户端,包括socket.io.js
    • 感谢 Martin,解决了我的 IE9 问题,导致单击刷新时出现读取错误 ECONNRESET。现在它会正确触发断开连接并立即杀死我的用户。 Khior - 在需要 socket.io 之后,我直接在服务器端文件中执行了此操作
    • 次要编辑:大多数 2012 之前的浏览器不支持 WebSockets,不仅仅是 Opera。第一个支持出现在 IE 10 (9/2012)、Firefox 11 (1/2012)、Chrome 16 (10/2011)、Safari 7 (10/2013)、Opera 12 (11/2012)、iOS 6 (1/ 2013),Android 4.4 (12/2013)。来源:caniuse.com/#feat=websockets
    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2016-12-06
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多