Java 如何在后端连接到Spring WebSocket请求?

Java 如何在后端连接到Spring WebSocket请求?,java,spring-boot,websocket,Java,Spring Boot,Websocket,我正在尝试向我的spring boot应用程序添加一个websocket连接,我习惯于只处理Https协议,但我需要有这个websocket连接才能继续向前端发送通知。我添加了这个依赖项,因为出于某种原因,我的应用程序没有执行SpringStarterWebSocket的2.4.5版 我有一个配置类来启用此连接,以下是类代码: @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements

我正在尝试向我的spring boot应用程序添加一个websocket连接,我习惯于只处理Https协议,但我需要有这个websocket连接才能继续向前端发送通知。我添加了这个依赖项,因为出于某种原因,我的应用程序没有执行SpringStarterWebSocket的2.4.5版

我有一个配置类来启用此连接,以下是类代码:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/api").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config){
        config.enableSimpleBroker("/topic/");
    }
}
要处理我在控制器中创建的连接,请执行以下操作:

@Autowired
SimpMessagingTemplate simpMessagingTemplate;

@MessageMapping("/news")
    public void broadcastNews(@Payload String message) {
        this.simpMessagingTemplate.convertAndSend("/topic/news", message);
    }
为了测试此连接,我使用了以下站点:,并尝试连接到以下url:wss/:localhost:8085/mywebsockets

当我尝试连接时,我的控制台会做出以下响应:

2020-02-25 10:32:09.707  INFO 16000 --- [MessageBroker-1] o.s.w.s.c.WebSocketMessageBrokerStats    : WebSocketSession[0 current WS(0)-HttpStream(0)-HttpPoll(0), 0 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], outboundChannelpool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], sockJsScheduler[pool size = 3, active threads = 1, queued tasks = 2, completed tasks = 0]
该网站没有连接,但它没有得到任何错误,我已经等了10多分钟,没有其他事情发生


我不明白我做错了什么,我已经尝试过使用Https连接,但根本不起作用,也许我没有找到我的url必须是什么,因为我的应用程序收到了连接请求,当它在控制台中响应时。

如果要连接到
wss//:localhost:8085/mywebsockets
必须将入口点设置为此url,而不是
addEndpoint(“/api”)
。您应允许测试的跨来源请求:

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/mywebsockets").setAllowedOrigins("*").withSockJS();
    }

您可以使用类似这样的chrome扩展来测试websocket连接:

选择api测试->ws并连接到
http://localhost:8085/mywebsockets
,客户端将自动将协议切换到
ws://

本教程帮助我正确设置了所有内容:

我正在尝试连接到此url:wss/:localhost:8085/mywebsockets
。该网站将在其主机上查找websocket服务器,但不会在您的计算机上查找。你应该告诉网站连接到你的公共ip。你可以从这里获得你的IP