似乎找不到这个问题的答案,也没有足够的关于SimpleBrokerMessageHandler的文档。
我参加了这个例子:https://gerrydevstory.com/2014/03/04/stock-ticker-demo-webapp-using-spring-4-websocket/
似乎如果客户端向主题发送消息,则订阅该主题的所有其他客户端都将收到该消息。好像主题的默认关系是many-to-many
。
我希望关系是one-to-many
,这意味着一个服务器到多个客户端,而不是很多客户端和服务器的客户端。
此行为表明存在安全性/真实性问题 - 按照上述链接中的示例,客户端可以向其他人发送虚假股票价格,冒充服务器。
我也希望如果这是行为,那么它可能会以某种方式在弹簧websockets和stomp的配置中被覆盖或更改,但我无法在任何地方找到足够的信息。
所以问题是:
many-to-many
吗? topic
的含义?one-to-many
计划)?怎么样?答案 0 :(得分:2)
/topic
前缀的目的地通常是经纪人目的地,正如您所说,任何人都可以向这些目的地发送消息,所有订户都会收到这些消息(消息实际上已转发给经纪人)。这将发生同时使用简单代理和代理中继(使用像RabbitMQ或ActiveMQ这样的完整STOMP代理)。
但是,Spring Security 4(目前在M2中)添加了websocket安全支持,因此您可以限制发送消息或订阅目的地(请参阅JIRA SEC-2713)。如果这还不够,您可以实现自己的ChannelInterceptor
并将其添加到clientInboundChannel
,以便您可以根据您的逻辑处理邮件并将其丢弃。