websocket原理
WebSocket 与http的区别
WebSocket 协议本质上是⼀个基于 TCP 的协议。
为了建⽴⼀个 WebSocket 连接,客户端浏览器⾸先要向服务器发起⼀个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了⼀些附加头信息,
其中附加头信息"Upgrade: WebSocket"表明这是⼀个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产⽣应答信息返回给客户端,
客户端和服务器端的 WebSocket 连接就建⽴起来了,双⽅就可以通过这个连接通道⾃由的传递信息,
并且这个连接会持续存在直到客户端或者服务器端的某⼀⽅主动的关闭连接。
相同点
都是⼀样基于TCP的,都是可靠性传输协议。
都是应⽤层协议。
不同点
WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。
WebSocket是需要浏览器和服务器握⼿进⾏建⽴连接的。⽽http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
websocket和socket联系
WebSocket在建⽴握⼿时,数据是通过HTTP传输的。但是建⽴之后,在真正传输时候是不需要HTTP协议的。
WebSocket 与SockJS
是⼀个浏览器JavaScript库,它提供了⼀个类似websosocket的对象。SockJS为您提供了⼀个连贯的、跨浏览器的Javascript API,它在浏览器和web服务器之间创建了⼀个低延迟、全双⼯、跨域通信通道。
WebSocket是HTML5新增的特性,⼀些浏览器可能不⽀持,类似于css的回退机制,SockJS就是对于WebSocket的⼀种回退机制。优先使⽤原⽣的WebSocket,当浏览器不⽀持WebSocket时,使⽤其他传输协议/轮询或者其他⽅法去实现WebSocket。
WebSocket 是发送和接收消息的底层API,⽽SockJS 是在 WebSocket 之上的 API;最后 STOMP(⾯向消息的简单⽂本协议)是基于SockJS 的⾼级API
简⽽⾔之,WebSocket 是底层协议,SockJS 是WebSocket 的备选⽅案,也是底层协议,⽽ STOMP 是基于 WebSocket(SockJS)的上层协议
有⼀些浏览器中缺少对WebSocket的⽀持,⽽SockJS是⼀个浏览器的JavaScript库,它提供了⼀个类似于⽹络的对象,SockJS提供了⼀个连贯的,跨浏览器的JavaScriptAPI,它在浏览器和Web服务器之间创建了⼀个低延迟、全双⼯、跨域通信通道。
SockJS的⼀⼤好处在于提供了浏览器兼容性。即优先使⽤原⽣WebSocket,如果浏览器不⽀持WebSocket,会⾃动降为轮询的⽅式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。