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

发表评论
登录后可评论,请前往 登录 或 注册