当前位置: 首页 > news >正文

vite 代理 websocket

🛡️一、WebSocket 基本概念

名称全称含义使用场景
ws://WebSocket非加密的 WebSocket 连接开发环境、内网通信
wss://WebSocket Secure加密的 WebSocket 连接(基于 TLS/SSL)生产环境、公网通信

🛡️二、安全性对比

特性ws://wss://
数据是否加密是(通过 SSL/TLS)
是否防止中间人攻击
是否需要证书是(服务器需配置 SSL 证书)
是否适合公网使用不推荐推荐

🛡️三、协议底层差异

差异ws://wss://
协议基于 TCP 协议基于 TLS/SSL 加密通道上的 TCP 协议
握手握手过程是明文的握手过程被加密
端口默认端口:80默认端口:443

🛡️四、配置与使用

🧩4.1、Vite 整体结构配置文件说明(vite.config.ts 或 vite.config.js)

export default defineConfig({server: {open: true,proxy: {'socket/': {target: 'ws://ip:端口',ws: true,changeOrigin: true,cookieDomainRewrite: {'^xxx.xxx.xxx.xxx': 'localhost'},rewrite: (path) => path.replace(/^\socket\//, '')}}}
})

🧩 4.2、关键字段解释

🔍 server.open

  • 作用:启动开发服务器后自动打开浏览器页面。
  • 示例:
// ts
open: true // 启动项目时自动打开 http://localhost:3000(默认端口)

🔍 server.proxy

  • 作用:用于设置开发环境下的请求代理规则,解决跨域问题。这里的 ‘socket/’ 是匹配请求路径前缀。
  • ‘socket/’ 代理规则:
配置项说明
target请求要转发的目标服务器地址,这里是 ws://ip:端口,表示一个 WebSocket 地址
ws设置为 true 表示该代理支持 WebSocket 协议
changeOrigin是否更改请求头中的 origin 字段为 target 的地址,通常在跨域场景下设为 true
cookieDomainRewrite将响应中的 Cookie 域名重写,例如将 xxx.xxx.xxx.xxx 改成 localhost,便于本地调试使用
rewrite请求路径重写函数,用于去掉 /socket 前缀再发送到目标服务器

✅ 4.3、实际效果举例

/*Vite 开发服务器会按照代理规则处理:匹配路径 /socket/example去掉 /socket 前缀 → 得到 /example转发到目标地址:ws://ip:端口/example所有数据通过本地代理中转,绕过浏览器跨域限制
*/
const socket = new WebSocket('ws://localhost:3000/socket/example');

🧠4.4、为什么需要这个代理?

在开发过程中,前端运行在 localhost:3000,而后端 WebSocket 服务可能部署在远程服务器上
(如 ws://192.168.1.100:8080),直接连接会遇到 跨域问题(CORS)。使用代理可以:- 绕过浏览器跨域限制- 在本地开发环境中模拟真实网络行为- 更方便地进行测试和调试

🧠4.5、完整流程图示意

[前端] ws://localhost:3000/socket/example↓
[Vite Dev Server 代理][重写路径]/example↓
[转发到] ws://ip:端口/example

🧠4.6、建议

  • 如果你的后端启用了 HTTPS/WSS,建议将 target 改为 wss://…
  • 若生产环境也需代理,应使用 Nginx 或 API 网关来实现
  • 不推荐在 production 构建中使用此代理机制,仅限开发阶段使用

相关文章:

  • Golang中集合相关的库
  • 系统思考助力富维东阳
  • pycharm无法导入相对路径下其它文件
  • 书法机构用的教务管理系统
  • 从装饰器出发,优雅处理 UI 自动化中的异常
  • Ubuntu每次开机IP都是127.0.0.1
  • JS 问号(?)运算符避免中间报错
  • 【Python从入门到精通】--‘@‘符号的作用
  • ComfyUI 学习笔记,案例 6 :FLUX 模型文生图
  • 芯片测试之Open-Short Test全解析:从原理到实战
  • vite 初始化react项目
  • 实时云渲染——比像素流送节省80%精力的UE程序推流技术
  • helm的原理及作用
  • AquaCrop 模型新视角:多技术助力农业精准水管理
  • 在一台服务器上通过 Nginx 配置实现不同子域名访问静态文件和后端服务
  • 解决社区录音应用横屏状态下,录音后无法播放的bug
  • JS逆向入门案例4——某数据服务平台数据爬取
  • Unity-Shader详解-其五
  • Coco AI 开源应用程序 - 搜索、连接、协作、您的个人 AI 搜索和助手,都在一个空间中。
  • sherpa-ncnn:Endpointing(断句规则)
  • 欧洲承诺投资6亿欧元吸引外国科学家
  • 体坛联播|曼联热刺会师欧联杯决赛,多哈世乒赛首日赛程出炉
  • 夜读丨古代有没有近视眼?
  • 两部上戏学生作品亮相俄罗斯“国际大学生戏剧节”
  • 深入贯彻中央八项规定精神学习教育中央第一指导组指导督导河北省见面会召开
  • 中国德国商会报告:76%在华德企受美国关税影响,但对华投资战略依然稳固