解决Spring Boot整合WebSocket时出现“Error during WebSocket handshake: Unexpected response code: 200”的问题

作者:很菜不狗2024.01.29 16:05浏览量:15

简介:在使用Spring Boot整合WebSocket时,有时会出现“Error during WebSocket handshake: Unexpected response code: 200”的错误。本文将分析该错误的原因,并提供解决方案。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在Spring Boot中整合WebSocket时,如果出现“Error during WebSocket handshake: Unexpected response code: 200”的错误,通常是由于配置不当或缺少必要的依赖导致的。下面我们将逐步分析并解决这个问题:

  1. 确保添加了WebSocket依赖
    首先,确保你的Spring Boot项目中已经添加了WebSocket的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:
    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-websocket</artifactId>
    4. </dependency>
    对于Gradle项目,可以在build.gradle文件中添加以下依赖:
    1. implementation 'org.springframework.boot:spring-boot-starter-websocket'
  2. 配置WebSocket
    在Spring Boot中,你需要配置WebSocket的连接和监听地址。这通常在application.properties或application.yml文件中完成。确保以下配置项存在且正确:
    1. spring.websocket.port=8080
    2. spring.websocket.static-path=/static/**
    或者使用YAML格式的配置:
    1. spring:
    2. websocket:
    3. port: 8080
    4. static-path: /static/**
    这些配置项分别设置了WebSocket服务的端口号和静态文件路径。根据实际需求进行相应的修改。
  3. 开启WebSocket支持
    在Spring Boot中,需要开启WebSocket的支持。在主类中添加以下注解:
    1. @EnableWebSocketMessageBroker
    2. public class MySpringBootApplication {
    3. // ...
    4. }
    这个注解告诉Spring Boot启用WebSocket消息代理,以便在应用程序中处理WebSocket通信。
  4. 检查代理和防火墙设置
    有时候,出现“Error during WebSocket handshake: Unexpected response code: 200”的错误可能是由于代理服务器或防火墙阻止了WebSocket握手请求。请检查你的网络环境,确保没有代理或防火墙阻止了WebSocket握手请求。如果有代理服务器或防火墙,请配置它们允许WebSocket握手请求通过。
  5. 检查WebSocket握手请求和响应的细节信息
    为了进一步诊断问题,你可以在Spring Boot应用程序中开启调试模式,查看WebSocket握手请求和响应的详细信息。在application.properties或application.yml文件中添加以下配置:
    1. logging.level.org.springframework.web.socket=DEBUG
    2. logging.level.org.springframework=DEBUG
    或者使用YAML格式的配置:
    1. logging:
    2. level:
    3. org.springframework.web.socket: DEBUG
    4. org.springframework: DEBUG
    然后重启应用程序并观察控制台输出,查看是否有与WebSocket握手相关的调试信息。这有助于定位问题所在。
    通过以上步骤,你应该能够解决Spring Boot整合WebSocket时出现的“Error during WebSocket handshake: Unexpected response code: 200”的问题。如果问题仍然存在,请检查其他可能的原因,例如网络配置、浏览器插件或防火墙设置等。
article bottom image

相关文章推荐

发表评论