1. 协议概述
STOMP(Simple Text Oriented Messaging Protocol,简单文本定向消息协议)是一个基于帧的协议,用于在客户端和服务器之间进行异步消息传递。
STOMP 消息采用帧(Frame)格式,由四部分组成:
COMMAND
header1:value1
header2:value2
Body^@ 组成部分:
命令行:指定帧类型(如 CONNECT、SEND、SUBSCRIBE)
头部(Headers):零个或多个键值对,提供元数据
空行:分隔头部和消息体
消息体(Body):可选的消息内容
终止符:NULL 字符(
\x00)标记帧结束
2. 帧内容说明
2.1 客户端帧
CONNECT:建立与服务器的连接。
CONNECT
accept-version:1.2
host:example.com
login:username
passcode:password
heart-beat:10000,10000
^@SEND:向目的地发送消息。
SEND
destination:/app/hello
content-type:application/json
content-length:27
{"message":"Hello World"}^@SUBSCRIBE:订阅目的地,接收消息。
SUBSCRIBE
id:sub-0
destination:/topic/news
ack:auto
^@UNSUBSCRIBE:取消订阅。
UNSUBSCRIBE
id:sub-0
^@DISCONNECT:断开连接。
DISCONNECT
receipt:disconnect-123
^@2.2 服务器帧
CONNECTED:服务器响应 CONNECT 帧。
CONNECTED
version:1.2
heart-beat:10000,10000
session:session-12345
^@MESSAGE:服务器向客户端推送消息。
MESSAGE
subscription:sub-0
message-id:msg-12345
destination:/topic/news
content-type:application/json
content-length:27
{"message":"Hello World"}^@ERROR:服务器报告错误。
ERROR
message:Access denied
content-type:text/plain
Access denied^@