stomp协议简介 服务器客户端通讯协议
一、STOMP协议介绍
STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。
STOMP协议的前身是TTMP协议(一个简单的基于文本的协议),专为消息中间件设计。
STOMP是一个非常简单和容易实现的协议,其设计灵感源自于HTTP的简单性。尽管STOMP协议在服务器端的实现可能有一定的难度,但客户端的实现却很容易。例如,可以使用Telnet登录到任何的STOMP代理,并与STOMP代理进行交互。
STOMP协议与2012年10月22日发布了最新的STOMP 1.2规范。
要查看STOMP 1.2规范,见: https://stomp.github.io/stomp-specification-1.2.html
二、STOMP的实现
业界已经有很多优秀的STOMP的服务器/客户端的开源实现,下面就介绍一下这方面的情况。
1、STOMP服务器
项目名 | 兼容STOMP的版本 | 描述 |
---|---|---|
Apache Apollo | 1.0 1.1 1.2 | ActiveMQ的继承者 http://activemq.apache.org/apollo |
Apache ActiveMQ | 1.0 1.1 | 流行的开源消息服务器 http://activemq.apache.org/ |
HornetQ | 1.0 | 来自JBoss的消息中间件 http://www.jboss.org/hornetq |
RabbitMQ | 1.0 1.1 1.2 | 基于Erlang、支持多种协议的消息Broker,通过插件支持STOMP协议 http://www.rabbitmq.com/plugins.html#rabbitmq-stomp |
Stampy | 1.2 | STOMP 1.2规范的一个Java实现 http://mrstampy.github.com/Stampy/ |
StompServer | 1.0 | 一个轻量级的纯Ruby实现的STOMP服务器 http://stompserver.rubyforge.org/ |
这里只列了部分。
2、STOMP客户端库
项目名 | 兼容STOMP的版本 | 描述 |
---|---|---|
activemessaging | 1.0 | Ruby客户端库 http://code.google.com/p/activemessaging/ |
onstomp | 1.0 1.1 | Ruby客户端库 https://rubygems.org/gems/onstomp |
Apache CMS | 1.0 | C++客户端库 http://activemq.apache.org/cms/ |
Net::STOMP::Client | 1.0 1.1 1.2 | Perl客户端库 http://search.cpan.org/dist/Net-STOMP-Client/ |
Gozirra | 1.0 | Java客户端库 http://www.germane-software.com/software/Java/Gozirra/ |
libstomp | 1.0 | C客户端库,基于APR库 http://stomp.codehaus.org/C |
Stampy | 1.2 | Java客户端库 http://mrstampy.github.com/Stampy/ |
stomp.js | 1.0 1.1 | JavaScript客户端库 http://jmesnil.net/stomp-websocket/doc/ |
stompest | 1.0 1.1 1.2 | Python客户端库,全功能实现,包括同步和异步 https://github.com/nikipore/stompest |
StompKit | 1.2 | Objective-C客户端库,事件驱动 https://github.com/mobile-web-messaging/StompKit/ |
stompngo | 1.0 1.1 1.2 | Go客户端库 https://github.com/gmallard/stompngo |
stomp.py | 1.0 1.1 1.2 | Python客户端库 https://github.com/jasonrbriggs/stomp.py |
tStomp | 1.1 | TCL客户端库 https://github.com/siemens/tstomp |
这里只列了部分。
三、STOMP协议分析
STOMP协议与HTTP协议很相似,它基于TCP协议,使用了以下命令:
CONNECT
SEND
SUBSCRIBE
UNSUBSCRIBE
BEGIN
COMMIT
ABORT
ACK
NACK
DISCONNECT
STOMP的客户端和服务器之间的通信是通过“帧”(Frame)实现的,每个帧由多“行”(Line)组成。
第一行包含了命令,然后紧跟键值对形式的Header内容。
第二行必须是空行。
第三行开始就是Body内容,末尾都以空字符结尾。
STOMP的客户端和服务器之间的通信是通过MESSAGE帧、RECEIPT帧或ERROR帧实现的,它们的格式相似。
stomp协议简介 服务器客户端通讯协议相关推荐
- qq的服务器协议,公开OICQ所有通讯协议
公开OICQ所有通讯协议 互联网 发布时间:2009-04-27 02:02:55 作者:佚名 我要评论 协议说明: 协议由报文头(T) 发送者(T) 接收者(T) 报文类型(T) 报文长 ...
- OICQ服务器系统通讯协议
协议说明: 协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成 发送者和接收者是系统 内的程序种类,OICQ服务器0x01,传真服务器 ...
- OICQ服务器系统通讯协议 1
网摘. OICQ服务器系统通讯协议 协议说明: 协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成 发送者和接收者是系统内 ...
- 充电桩与后台服务器通迅协议,充电桩平台通讯协议.doc
充电桩平台通讯协议 充电桩平台通讯协议 交运工业技术处 2016年9月25日 目录 1. 设备与业务接入模式 ............................................. ...
- qt通过websocket和html通信,QT Websocket实现服务器客户端通讯(服务端部分)
接上文QT Websocket实现服务器客户端通讯(客户端部分)web https://blog.csdn.net/qq_39573345/article/details/80682232 服务器 S ...
- 自由口协议转标准modbus通讯协议 非标协议转标准协议
自由口协议转标准modbus通讯协议 非标协议转标准协议 编号:32199664417078228九妹健康快乐成长
- 充电桩与后台服务器通迅协议,充电桩平台通讯协议.pdf
充电桩平台通讯协议 交运工业技术处 2016 年9 月25 日 目录 1. 设备与业务接入模式3 2. HTTP 原始报文格式4 3. 平台报文一览5 4. 平台报文详细6 4.1. 请求报文6 4. ...
- so部标协议模拟服务器,808部标协议
满意答案 豆.浆 2016.10.12 采纳率:58% 等级:25 已帮助:62843人 基于部标JT/T 808协议及数据格式的GPS服务器 2011年5月10日中国交通通信信息中心下发了&l ...
- 买个服务器来挂协议,云服务器代挂协议在哪
云服务器代挂协议在哪 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows弹性云服务器.弹性云服务器状态为"运行中".如果弹性云服务器采用密钥方式鉴 ...
最新文章
- K8S的横向自动扩容的功能Horizontal Pod Autoscaling
- Linux常用命令——fsck
- 图像形态学操作—腐蚀膨胀深入
- 名词解释计算机网络体系结构,计算机网络技术题库(带答案).doc
- 从Firefox控制您喜欢的音乐播放器
- 一个好端端的团队是如何被管理者搞垮的?
- 塞尔达传说gba_《塞尔达传说缩小帽》是系列一年级生?,回忆众多玩友的启蒙之作...
- Java线程的同步 - synchronized
- python实训报告pygame_20192418 2019-2020-2 《Python程序设计》实验4报告
- 【图像分割】基于matlab免疫遗传算法单阈值图像分割【含Matlab源码 729期】
- SLAM领域著名实验室及大牛、SLAM领域大佬(不定期更新)
- 安装Dukto局域网通讯工具
- python的os库——批量修改文件名称
- 用计算机弹刚好一点,《计算机组成原理》作业解答(14级)
- _search.php_wholesale_search.php
- 【激励自己】牛人职场分享汇总
- NiFi 的使用心得
- SOA(面向服务的架构)
- PHP项目的发布(部署)
- SDUT OJ 2977