我正在使用 spring-websocket 和 spring-messaging(版本 4.2.2.RELEASE)通过具有全功能代理(Apache ActiveMQ 5.10.0)的 websockets 实现 STOMP。
我的客户只能订阅目的地 - 也就是说他们不应该能够发送消息。此外,我想对我的客户可以订阅的目的地实施更严格的控制。在任何一种情况下(即当客户端尝试发送消息或订阅无效目的地时)我希望能够
- 发送适当的错误,和/或
- 关闭网络套接字
请注意,我所有的目的地都转发到 ActiveMQ。我认为我可以在入站通道上实现ChannelInterceptor,但是查看 API 我无法弄清楚如何实现我想要的。这可能吗?验证客户端请求的最佳方法是什么?我的 websocket 配置如下:
<websocket:message-broker
application-destination-prefix="/app">
<websocket:stomp-endpoint path="/pushchannel"/>
<websocket:stomp-broker-relay relay-host="localhost"
relay-port="61613" prefix="/topic"
heartbeat-receive-interval="300000" heartbeat-send-interval="300000" />
<websocket:client-inbound-channel>
<websocket:interceptors>
<bean class="MyClientMessageInterceptor"/>
</websocket:interceptors>
</websocket:client-inbound-channel>
</websocket:message-broker>