1. 协议概述

STOMP(Simple Text Oriented Messaging Protocol,简单文本定向消息协议)是一个基于帧的协议,用于在客户端和服务器之间进行异步消息传递。

STOMP 消息采用帧(Frame)格式,由四部分组成:

COMMAND
header1:value1
header2:value2

Body^@ 

组成部分:

  1. 命令行:指定帧类型(如 CONNECT、SEND、SUBSCRIBE)

  2. 头部(Headers):零个或多个键值对,提供元数据

  3. 空行:分隔头部和消息体

  4. 消息体(Body):可选的消息内容

  5. 终止符: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^@

此处内容已隐藏,「验证码可见」