我的基于spring 1.5的stomp websocket服务器和基于python的stomp客户端运行正常。
将spring版本升级到2.x之后,客户端不再收到任何消息。我已经咨询了弹簧指南,但找不到任何错误。
基于Python的踏板客户端:
import stomper
from websocket import create_connection
ws = create_connection('ws://localhost:8080/ws')
ws.send(stomper.subscribe('/msg', 0))
print(ws.recv())
基于Spring 1.5的脚踏服务器:
@Configuration
@EnableWebSocketMessageBroker
class DemoConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/msg");
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("ws");
}
}
@Component
@EnableScheduling
class MessageBroker {
@Autowired
private SimpMessagingTemplate messenger;
@Scheduled(fixedRate = 1000)
private void msg() {
messenger.convertAndSend("/msg", "hello");
}
}
基于Spring 2.x的踏板服务器(实现一个接口而不扩展抽象类):
@Configuration
@EnableWebSocketMessageBroker
class DemoConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/msg");
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("ws");
}
}
@Component
@EnableScheduling
class MessageBroker {
@Autowired
private SimpMessagingTemplate messenger;
@Scheduled(fixedRate = 1000)
private void msg() {
messenger.convertAndSend("/msg", "hello");
}
}