如何在使用 stomp 时让我的 springboot 应用程序 websocket 应用程序通过“ws://”url 连接

Posted

技术标签:

【中文标题】如何在使用 stomp 时让我的 springboot 应用程序 websocket 应用程序通过“ws://”url 连接【英文标题】:How can i make my springboot app websocket app get connected via a "ws://" url while using stomp 【发布时间】:2018-11-04 14:31:46 【问题描述】:

我有一个 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:// 入口点?

【问题讨论】:

【参考方案1】:

我遇到了类似的问题。试试这个,应该有帮助。

var socket = new WebSocket('ws://localhost:8080/websocket-example/websocket');

【讨论】:

谢谢,它成功了......请问您有在移动设备上使用 websocket 的经验吗? 对不起,我没有。

以上是关于如何在使用 stomp 时让我的 springboot 应用程序 websocket 应用程序通过“ws://”url 连接的主要内容,如果未能解决你的问题,请参考以下文章

从控制台(Ctrl-C)终止时让我的 PyQt 应用程序退出的正确方法是啥?

Spring Stomp SimpUserRegistry 匿名用户

当我的本地域未在 Yahoo 注册时,我如何在本地开发时让 Yahoo OAuth 工作?

如何在拍摄 QR 码时让 iOS 相机建议我的应用

Vertx STOMP 会话存储配置

当我点击UITextView时,如何让我的iOS应用程序显示东部阿拉伯语小数点?