@EnableWebSocket 和 @EnableWebSocketMessageBroker 有什么区别

Vic*_*tor 6 websocket spring-boot

我想在 Spring 应用程序中启用套接字,并且在文档中提出了两种使用它们的方法,普通的和启用 STOMP 的。

我知道后者是由消息代理备份的,但没有找到对此功能的任何很好的解释。

所以,我的问题@EnableWebSocketMessageBroker是,与@EnableWebSocket?

Vic*_*tor 7

从我目前所读到的内容来看,不同之处在于后者 ( @EnableWebSocketMessageBroker) 为交换的消息提供了更好的处理。为了以某种方式控制它们,一个很好的方法是使用消息代理:

  • 易于广播到感兴趣的部分。否则,您必须跟踪会话并遍历它们,以便向每个感兴趣的客户发送消息
  • 确保消息到达客户端。开箱即用,消息代理提供确认标志,这些标志将在客户端和服务器之间互换,以确保消息传输和拦截

注意:注解@EnableWebSocketMessageBroker默认不会添加一个底层的全功能 Broker,而是一个“简单的 Broker”。简单版:

  • 支持 STOMP 的子集:SUBSCRIBE、UNSUBSCRIBE、MESSAGE
  • 没有确认、收据、交易
  • 简单的消息发送循环
  • 不适合聚类

功能齐全的将添加更多功能,可以在其演示文档中找到。(在http://rstoyanchev.github.io/s2gx2013-websocket-browser-apps-with-spring 中阅读更多内容)

其他值得一读的参考:消息队列与套接字MessageBroker WebSocket 子协议