@EnableWebSocket和@EnableWebSocketMessageBroker有什么区别

时间:2018-07-23 08:18:14

标签: spring-boot websocket

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

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

所以,我的问题是,与@EnableWebSocketMessageBroker相比,使用@EnableWebSocket时Spring会带来什么样的背景?

1 个答案:

答案 0 :(得分:1)

根据我到目前为止所读的内容,不同之处在于,后者(@EnableWebSocketMessageBroker)为交换的消息提供了更好的处理。为了使它们保持某种控制状态,一种非常好的方法是使用消息代理:

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

注意:默认情况下,注释@EnableWebSocketMessageBroker不会添加基础的全功能代理,而是“简单的”代理。 简单版本:

  • 支持STOMP的子集:SUBSCRIBE,UNSUBSCRIBE,MESSAGE
  • 没有船坞,收据,交易
  • 简单的消息发送循环
  • 不适合集群

功能齐全的产品将添加更多功能,这些功能可以在其演示文稿文档中找到。 (有关更多信息,请访问http://rstoyanchev.github.io/s2gx2013-websocket-browser-apps-with-spring

其他易于阅读的参考文献:Message queues vs socketsThe MessageBroker WebSocket Subprotocol