websocket联调失败主因是握手失败、路径不匹配或代理/防火墙拦截;需检查后端serverendpoint配置、前端ws://协议与路径一致性、开发服务器ws代理设置、spring security放行握手路径等。

Spring Boot + Vue 的 WebSocket 联调失败,八成不是代码写错了,而是握手没过、路径不匹配、或代理/防火墙拦了 ws 协议。
WebSocket 连接 404 或直接报错 ERR_CONNECTION_REFUSED
这是最常见问题,本质是前端请求的 URL 根本没被后端识别为 WebSocket 端点。
- 检查后端是否真正启用了 WebSocket 支持:必须有
@Configuration类中注册了ServerEndpointExporterbean(嵌入式 Tomcat 必须加;若部署到独立 Tomcat 则不需要) - 确认前端连接地址协议和路径完全匹配:比如后端用
@ServerEndpoint("/chat"),前端必须用new WebSocket("ws://localhost:8080/chat")—— 注意是ws://(开发环境),不是http://;生产环境若走 HTTPS,则必须用wss:// - Vue 开发服务器(Vite/Webpack Dev Server)默认不代理
ws协议。若后端端口不是 8080,需在vite.config.ts中显式配置:export default defineConfig({<br> server: {<br> proxy: {<br> '/ws': {<br> target: 'ws://localhost:8080',<br> ws: true,<br> changeOrigin: true<br> }<br> }<br> }<br>)注意:这里/ws是前端请求路径前缀,必须和实际连接 URL 的 path 部分一致(如new WebSocket("/ws/chat"))
连接成功但收不到消息,或 onMessage 不触发
说明 TCP 连接建立了,但消息路由或序列化出了问题。
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
