SpringBoot配合Vue实现WebSocket 常用WebSocket前后端联调【教程】

夏涛姑娘_5982

夏涛姑娘_5982

2026-06-01

207人浏览

原创

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

springboot配合vue实现websocket 常用websocket前后端联调【教程】

Spring Boot + Vue 的 WebSocket 联调失败,八成不是代码写错了,而是握手没过、路径不匹配、或代理/防火墙拦了 ws 协议。

WebSocket 连接 404 或直接报错 ERR_CONNECTION_REFUSED

这是最常见问题,本质是前端请求的 URL 根本没被后端识别为 WebSocket 端点。

  • 检查后端是否真正启用了 WebSocket 支持:必须有 @Configuration 类中注册了 ServerEndpointExporter bean(嵌入式 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-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.1万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习