我有一个 springboot 应用程序,我想通过手机等设备连接 websocket,所以我正在寻找一种方法让我的 websocket 有一个以“ws://”开头的入口点。在“http://www.websocket.org/echo.html”上测试我的默认 websocket url 应该是“ws://localhost:8080/websocket-example”时,它没有通过。但是 sockjs 在我的客户端使用(“http://localhost:8080/websocket-example”)调用它,它有效:
var socket = new SockJS('http://localhost:8080/websocket-example');
stompClient = Stomp.over(socket);
stompClient.connect({},function (frame) {
}
我目前正在对它使用 stomp,我的配置如下所示:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
stompEndpointRegistry.addEndpoint("/websocket-example")
.setHandshakeHandler(new CustomHandshakeHandler()).setAllowedOrigins("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
根据这个post它说我可以通过删除我所做的 .withSockJS()
来实现 ws://入口点,但它仍然不起作用(进一步阅读时,有人说这在 springboot 上不起作用)。另一个选项是完全删除 stomp,此选项有效,但我将无法将消息直接路由到个人用户。
如何在服务器端保持 stomp 的同时创建 ws://入口点?
请您参考如下方法:
我遇到了类似的问题。试试这个,应该有帮助。
var socket = new WebSocket('ws://localhost:8080/websocket-example/websocket');