【问题标题】:how to configure socket.io 1.3.7 to use websocket first如何配置socket.io 1.3.7首先使用websocket
【发布时间】:2015-12-07 22:15:14
【问题描述】:

将 socket.io 升级到 1.3.7 后

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

不再起作用,我在哪里配置这些选项? (我在官方文档中找不到这个信息)

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

    您可以像这样配置传输首选项:

    // server
    var io = require('socket.io')({
      transports : [ 'websocket', 'xhr-polling' ]
    });
    

    默认情况下,socket.io@1 将尝试升级到可用的 Web 套接字,但最初,客户端将始终尝试使用 XHR/JSONP 进行连接,并在可用时升级到 Web 套接字。

    这种行为可能会令人困惑(我第一次使用它时会感到困惑),因为它看起来像是 XHR 轮询。它记录在here

    Socket.IO 从不假定WebSocket 会正常工作,因为在实践中很有可能不会。相反,它会立即与 XHR 或 JSONP 建立连接,然后尝试升级到 WebSocket 的连接。与依赖超时的后备方法相比,这意味着您的任何用户都不会有降级的体验。

    【讨论】:

    • 如何确定连接已升级?
    • @Herokiller 在初始 XHR 握手之后,XHR 请求停止(这意味着 websocket 接管了)。此外,您可以在浏览器的开发工具中观看 websocket 数据流(在 Chrome 中,您可以在 Network 选项卡中找到它们,然后选择 WS)。
    • 在 Firefox 控制台中我不断看到“轮询”请求,我该如何调试,为什么还不是 websocket?
    • @Herokiller 不知道为什么它无法升级。您是否在代理后面运行您的节点服务器?
    【解决方案2】:

    你试过了吗:

    var socket = require('socket.io')({
      transports : ["websocket", "xhr-polling"]
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2016-03-10
      • 2014-06-21
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多