首页 > 解决方案 > @EnableWebSocket 和 @EnableWebSocketMessageBroker 有什么区别

问题描述

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

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

@EnableWebSocketMessageBroker所以,我的问题是,与 Spring相比,Spring 在使用时会带来什么幕后场景@EnableWebSocket

标签: spring-bootwebsocket

解决方案


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

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

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

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

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

其他值得阅读的参考:Message queues vs sockets , The MessageBroker WebSocket Subprotocol


推荐阅读