Skip to main content
 首页 » 编程设计

java之我怎样才能让我的 springboot 应用程序 websocket 应用程序在使用 stomp 时通过 "ws://"url 连接

2023年09月11日71xxx_UU

我有一个 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');