【问题标题】:Does SockJS emulate websockets even on a browser that supports websockets?SockJS 即使在支持 websockets 的浏览器上也能模拟 websockets 吗?
【发布时间】:2014-07-05 07:53:56
【问题描述】:

SockJS 是否在支持 websocket 的浏览器上模拟 websockets?

我正在尝试使用 websocket 和 RabbitMQ 在网络上发送和接收消息。 RabbitMQ 提供了一个rabbitmq-web-stomp 插件,它使用 Sockjs 来桥接 websocket 和 RabbitMQ STOMP 插件。

但是 SockJS 说它是一个 websocket 模拟器。所以我想问一下它是否会在支持 websockets 的浏览器上模拟 websocket。

【问题讨论】:

    标签: javascript websocket sockjs


    【解决方案1】:

    来自the SockJS javascript library(强调我的):

    SockJS 是一个提供类 WebSocket 对象的浏览器 JavaScript 库。 SockJS 为您提供了一个连贯的、跨浏览器的 Javascript API,它在浏览器和 Web 服务器之间创建了一个低延迟、全双工、跨域的通信通道。

    在底层SockJS 尝试首先使用本机 WebSockets。如果失败,它可以使用各种特定于浏览器的传输协议,并通过类似 WebSocket 的抽象来呈现它们。

    SockJS 公开了一个类似于 websocket 的 API,以使您的 javascript 应用程序认为您始终拥有一个 web socket,即使您没有。只考虑一种传输方式来编写应用程序会更容易,如果缺少的话,让其他东西来模拟它。您的应用程序代码更简单。

    SockJS 将处理回退。它将尝试使用第一种支持的通信方式来排序这些通信方式。

    [
     'websocket',
     'xdr-streaming',
     'xhr-streaming',
     'iframe-eventsource',
     'iframe-htmlfile',
     'xdr-polling',
     'xhr-polling',
     'iframe-xhr-polling',
     'jsonp-polling'
    ]
    

    注意 web socket 是第一个。如果您的浏览器支持 Web 套接字,SockJS 将使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 2018-05-18
      • 2021-08-07
      • 2017-02-17
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多