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

时间:2014-07-05 07:53:56

标签: javascript websocket sockjs

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  

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

     

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

SockJS公开了一个像websocket那样的API,让你的javascript应用程序认为你总是有一个网络套接字,即使你没有。编写应用程序时只需考虑一个传输,并且如果遗漏则让其他东西模仿它,这样会更容易。您的应用程序代码更简单。

SockJS将处理后备。它将尝试使用支持的第一种通信方式。

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

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