我有,我认为是一个非常简单的Spring WebSocket应用程序.但是,我正在尝试使用路径变量进行订阅以及消息映射.
我在下面发布了一个释义的例子.我希望@SendTo注释能够根据用户返回给订阅者fleetId.即POST以/fleet/MyFleet/driver/MyDriver应通知用户/fleet/MyFleet,但我没有看到这种行为.
值得注意的是订阅文字/fleet/{fleetId}作品.这是有意的吗?我错过了一些配置吗?或者这不是它的工作原理吗?
我对WebSockets或Spring项目不是很熟悉,所以提前谢谢.
Controller.java
...
@MessageMapping("/fleet/{fleetId}/driver/{driverId}")
@SendTo("/topic/fleet/{fleetId}")
public Simple simple(@DestinationVariable String fleetId, @DestinationVariable String driverId) {
return new Simple(fleetId, driverId);
}
...
Run Code Online (Sandbox Code Playgroud)
WebSocketConfig.java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/live");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/fleet").withSockJS();
}
}
Run Code Online (Sandbox Code Playgroud)
的index.html
var socket = new SockJS('/fleet');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
// Doesn't Work
stompClient.subscribe('/topic/fleet/MyFleet', …Run Code Online (Sandbox Code Playgroud)