gpt4 book ai didi

java - 如何连接后端的Spring WebSocket请求?

转载 作者:行者123 更新时间:2023-12-01 18:14:51 28 4
gpt4 key购买 nike

我正在尝试向我的 Spring Boot 应用程序添加一个 websocket 连接,我只用来处理 Https 协议(protocol),但我需要有这个 websocket 连接来继续向前端发送通知。我添加了这个依赖项 <org.springframework.boot:spring-boot-starter-websocket:2.0.0.RELEASE> ,因为由于某种原因我的应用程序不执行 spring-starter-websocket 的 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/");
}
}

为了处理连接,我在 Controller 中创建了此方法:

@Autowired
SimpMessagingTemplate simpMessagingTemplate;

@MessageMapping("/news")
public void broadcastNews(@Payload String message) {
this.simpMessagingTemplate.convertAndSend("/topic/news", message);
}

为了测试此连接,我使用此网站:https://www.websocket.in/test-online ,我正在尝试连接到此网址: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 连接: https://chrome.google.com/webstore/detail/apic-complete-api-solutio/ggnhohnkfcpcanfekomdkjffnfcjnjam

选择api测试->ws,连接http://localhost:8085/mywebsockets,客户端会自动切换协议(protocol)为ws://

本教程帮助我正确设置了所有内容: http://kojotdev.com/2019/07/using-spring-websocket-stomp-application-with-vue-js/

关于java - 如何连接后端的Spring WebSocket请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60395327/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com