即使在支持websocket的浏览器上,SockJS是否会模拟websockets?
我正在尝试使用websocket和RabbitMQ在网络上发送和接收消息。 RabbitMQ提供了一个rabbitmq-web-stomp
插件,它使用Sockjs桥接websocket和RabbitMQ STOMP插件。
但是SockJS说这是一个websocket模拟器。所以我想询问它是否会在支持websockets的浏览器上模拟websocket。
答案 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将使用它。