你们好,最近小未来发现有诸多的小伙伴们对于websocket和TCP区别,websocket这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、服务端和客户端采用STOMP协议进行通信。
2、关于SockJs。
3、 SockJS 是 WebSocket 技术的一种模拟。SockJS 会 尽可能对应 WebSocket API,但如果 WebSocket 技术不可用的话,就会选择另外的通信方式协议。
4、sockjs,对于低版本的ie等不支持websocket的浏览器,采用js模拟websocket对象的办法来实现兼容(其实也有轮询的情况)。
5、关于STOMP。
6、 SockJS 为 WebSocket 提供了 备选方案。但无论哪种场景,对于实际应用来说,这种通信形式层级过低。下面看一下如何 在 WebSocket 之上使用 STOMP协议,来为浏览器 和 server 间的 通信增加适当的消息语义。(STOMP—— Simple Text Oriented Message Protocol——面向消息的简单文本协议)。
7、 STOMP帧由命令,一个或多个头信息以及负载所组成。如下就是发送数据的一个STOMP帧:
8、 SEND
9、 destination:/app/room-message
10、 content-length:20
11、 {\"message\":\"Hello!\"}
12、对以上代码分析:
13、1. SEND:STOMP命令,表明会发送一些内容;
14、2. destination:头信息,用来表示消息发送到哪里;
15、3. content-length:头信息,用来表示 负载内容的 大小;
16、4. 空行;
17、5. 帧内容(负载)内容
18、WebSocket、SockJs、STOMP三者关系。
19、 简而言之,WebSocket 是底层协议,SockJS 是WebSocket 的备选方案,也是 底层协议,而 STOMP 是基于 WebSocket(SockJS) 的上层协议。
20、1. 假设HTTP协议并不存在,只能使用TCP套接字来编写web应用,你可能认为这是一件疯狂的事情。
21、2. 不过幸好,我们有HTTP协议,它解决了 web 浏览器发起请求以及 web 服务器响应请求的细节。
22、3. 直接使 WebSocket(SockJS) 就很类似于 使用 TCP 套接字来编写 web 应用;因为没有高层协议,因此就需要我们定义应用间所发送消息的语义,还需要确保 连接的两端都能遵循这些语义。
23、4. 同HTTP在TP套接字上添加请求-响应模型层一样,STOMP在 WebSocket之上提供了一个基于帧的线路格式层,用来定义消息语义。
以上就是websocket这篇文章的一些介绍,希望对大家有所帮助。