使用 SimpleBrokerMessageHandler语言 - STOMP Spring 时的通信关系



似乎找不到这个问题的答案,也没有足够的关于SimpleBrokerMessageHandler的文档。

我按照这个例子:https://gerrydevstory.com/2014/03/04/stock-ticker-demo-webapp-using-spring-4-websocket/

似乎如果客户端

向该主题发送消息,则订阅该主题的所有其他客户端都将收到该消息。好像主题的默认关系是many-to-many.

我希望这种关系是one-to-many的,这意味着一台服务器对许多客户端,而不是许多客户端到许多客户端和服务器。

此行为表明存在安全性/真实性问题 - 按照上面链接中的示例,客户端可能会向其他人发送虚假股票价格,冒充服务器。

我还希望,如果这是行为,那么它可以以某种方式在弹簧 websockets 和 tomp 的配置中的某个地方被覆盖或更改,但我只是在任何地方都找不到足够的信息。

所以问题是:

  1. 默认行为真的many-to-many SimpleBrokerMessageHandler 吗?
  2. 我没有正确理解topic的含义吗?
  3. 这种行为可以以某种方式改变或控制吗?
  4. 如果没有,ActiveMQ或RabbitMQ或任何其他第三方代理是否会对我的需求(实施one-to-many方案(有任何帮助?又如何?

带有/topic前缀的目的地通常是代理目的地,正如您正确所说,任何人都可以向此类目的地发送消息,并且所有订阅者都将收到这些消息(消息实际上被转发给代理(。这在简单代理和代理中继中都会发生(使用任何成熟的 STOMP 代理,如 RabbitMQ 或 ActiveMQ(。

但是,Spring Security 4(目前在M2中(添加了websocket安全支持,因此您可以限制发送消息或订阅目的地(请参阅JIRA SEC-2713(。如果这还不够,您可以实现自己的ChannelInterceptor并将其添加到clientInboundChannel,以便您可以根据逻辑处理消息并丢弃它。

相关内容

  • 没有找到相关文章

最新更新