使用 STOMP 作为子协议,可以让 Spring 框架和 Spring Security 提供比使用原始 WebSockets 更丰富的编程模型。关于 HTTP 与原始 TCP 的对比,以及它如何让 Spring MVC 和其他 Web 框架提供丰富的功能,也可以提出同样的观点。下面列出了一些好处:
- 不需要发明一个自定义的消息传输协议和消息格式。
- STOMP 客户端,包括 Spring 框架中的一个 Java 客户端,都是可用的。
- 你可以(选择性地)使用消息代理(如 RabbitMQ、ActiveMQ 和其他)来管理订阅和广播消息。
- 应用逻辑可以组织在任何数量的
@Controller
实例中,消息可以根据 STOMP 目标头被路由到它们,而不是用给定连接的单个WebSocketHandler 处理原始 WebSocket 消息。 - 你可以使用 Spring Security,根据 STOMP 目的地和消息类型来保护消息。