跳到主要内容

STOMP

ChatGPT-4o-mini 中英对照 STOMP

WebSocket 协议定义了两种类型的消息(文本和二进制),但它们的内容是未定义的。该协议定义了一个机制,使客户端和服务器能够协商一个子协议(即,更高级别的消息传递协议),以便在 WebSocket 之上使用,定义每个可以发送的消息类型、格式、每条消息的内容等。使用子协议是可选的,但无论如何,客户端和服务器需要就某种协议达成一致,以定义消息内容。

章节摘要

📄️ 用户目的地

一个应用程序可以发送针对特定用户的消息,而 Spring 的 STOMP 支持识别以 /user/ 为前缀的目的地。比如,一个客户端可能会订阅 /user/queue/position-updates 目的地。UserDestinationMessageHandler 处理这个目的地,并将其转换为一个唯一的用户会话目的地(例如 /queue/position-updates-user123)。这提供了订阅一个通用命名目的地的便利,同时确保与其他订阅相同目的地的用户之间没有冲突,从而使每个用户都能接收到独特的股票位置更新。

📄️ 监控

当您使用 @EnableWebSocketMessageBroker 或 websocket:message-broker 时,关键基础设施组件会自动收集统计信息和计数器,这些信息提供了有关应用程序内部状态的重要洞察。该配置还声明了一个类型为 WebSocketMessageBrokerStats 的 bean,该 bean 将所有可用信息集中在一个地方,并默认每 30 分钟以 INFO 级别记录一次。此 bean 可以通过 Spring 的 MBeanExporter 导出到 JMX,以便在运行时查看(例如,通过 JDK 的 jconsole)。以下列表总结了可用的信息: