WebSocket与STOMP介绍
2016-03-29 15:04
781 查看
什么是websocket
推荐知乎上一篇通俗易懂的文章WebSocket 是什么原理?为什么可以实现持久连接?。为什么要引入
http协议是无状态协议,即每次请求时都不知道前面发生的什么。而且请求只能由浏览器发起,服务器只能响应该请求,不能主动发送消息给浏览器。这种单向的协议显然在很多场景下是不适用的,比如消息推送,股票实时行情。在websocket之前,我们通常使用Ajax轮询服务器或者使用长轮询,这两种方式都极大消耗了服务端和客户端的资源。而使用websocket,我们只需要借用http协议进行握手,然后保持着一个websocket连接,知道客户端主动断开。相对于另外两种方式,websocket只发送了一次http请求,当服务器有数据时再向浏览器推送数据,减少了带宽的使用以及服务器CPU使用率。Websocket、Http、TCP、Socket之间关系
HTTP、WebSocket 等应用层协议,都是基于 TCP 协议来传输数据的。对于 WebSocket 来说,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。
Socket并不是一种协议,而是方便我们使用TCP/IP的一种封装,而 WebSocket 则不同,它是一个完整的 应用层协议,包含一套标准的 API 。
STOMP协议
STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议许多公司都提供了基于STOMP的服务器与客户端,若spring4开始支持的spring-websocket服务端,基于浏览器的stomp.js客户端
STOMP定义了客户端和服务器之间以Frame进行同行,Frame的格式为:
COMMAND header1:value1 header2:value2 Body^@
COMMAND分为CONNECT、SEND、SUBSCRIBE、UNSUBSCRIBE、BEGIN、COMMIT、ABORT、ACK、NACK、DISCONNECT这几种。
COMMAND之后下一行紧跟着的是头部的键值对,之后加入一条空行,空行之后为body,即传递的消息实体。
相关文章推荐
- 测试3.29作业 叶乔菲 3013218151
- Oracle密码过期
- 字体类形:font-family, font-style
- 关于vmware虚拟机硬件里没有软盘驱动器,而操作系统里还有的解决方法
- 指针数组与数组指针
- Leetcode 100. Same Tree
- C#静态构造函数
- php ajax实现文件上传进度条
- shell脚本之exec操作文件描述符 + 示例
- 浅谈矩阵分解在推荐系统中的应用
- (一)RxJava在Android网络框架中的使用
- basePath
- 在Interface Builder中有效地工作的8个技巧
- jquery.lazyload的使用
- Nginx的事件处理机制
- 关于某培训机构所谓的入学考试(被拒),呵呵
- javaweb常见错误代号
- 再谈矩阵分解在推荐系统中的应用
- Tomcat与Jre绿色环境配置(生产环境)
- C++ 定义静态数据成员