websocket、sse前端本地mock联调利器

项目地址:cbtpro/ws-mock-server

项目背景:前端实时推送联调的痛点

在现代前端开发中,消息推送、实时通知等功能变得越来越常见,WebSocket和Server-Sent Events(SSE)是主流技术方案。实际开发联调时,后端接口往往未完成或难以稳定模拟,导致前端开发者难以验证实时通讯逻辑,后端开发者也很难模拟多端场景。

特别是新手开发者,可以使用这个工具,无需后端接口就绪,可以快速联调前端业务逻辑代码。

于是我使用node开发了这个小工具,因为是基于js的,对前端开发人员友好,为了降低难度,特别没有使用ts。

核心功能亮点

WebSocket & SSE 双协议支持

  • 同时支持 WebSocket 和 SSE 两种实时推送协议。
  • 多客户端连接,广播/单发消息都可测。
  • 客户端可通过浏览器控制台、代码脚本或Postman接入。

HTTP POST 广播接口

  • 通过 /push(WS/SSE通用)和 /sse-push(SSE专用)接口,方便外部或页面直接向所有客户端广播消息。
  • 支持自定义JSON结构,测试各种业务场景。

热更新 & 前端控制台

  • 集成 livereload,前端页面静态资源变更自动刷新,开发体验极佳。
  • 内置控制台页面,支持手动发送消息、实时日志显示、连接状态切换。

极简启动,零配置依赖

  • 一行命令即可启动,Node.js环境即可,无需数据库、无复杂配置。
  • 代码结构清晰,易扩展。

核心实现与技术解析

Express+原生WS/SSE实现

  • 用 Express 搭建 HTTP 服务,负责静态页面、API路由。
  • WebSocket 采用原生实现,管理客户端连接,支持消息广播。
  • SSE 用长连接 res.write 持续推送事件,自动处理断线重连。

热更新机制

  • livereload 监听 public 目录,页面变更自动刷新,无需手动F5。

前端控制台交互

  • 页面内置三大功能区:
    • POST广播区:输入JSON,点按钮直接广播给所有WS/SSE客户端。
    • WebSocket区:模拟客户端收发消息,实时日志展示。
    • SSE区:一键连接/断开SSE,手动推送消息,实时接收事件。
  • 支持多浏览器、多窗口同时测试联调效果。

高度模块化

  • WS与SSE功能独立封装,方便自定义扩展、集成其他协议。
  • 广播与连接管理逻辑解耦,易维护。

典型应用场景

  1. 前端开发联调 无需等待后端接口完成,随时模拟推送场景,验证界面逻辑和异常处理。

  2. 后端开发模拟 快速验证推送接口兼容性,模拟多客户端连接、断线重连等复杂情况。

  3. 教学与演示 讲解实时通讯原理、协议区别,用工具可视化展示效果。

  4. 自动化测试 结合脚本自动发送消息,测试前端响应和性能。


使用注意事项

  • 安全性:所有API默认无鉴权,仅供本地开发。生产环境务必加认证和访问控制。
  • 端口冲突处理:默认8080端口,可在src/main.js修改。
  • 依赖环境:推荐Node.js 18+,Express 5.x以上。
  • SSE兼容性:SSE不支持所有代理/旧浏览器,建议主流浏览器测试。
  • 数据规范:建议所有推送消息使用标准JSON格式,便于调试和日志分析。

体验与扩展建议

  • 快速体验:克隆仓库、npm installnpm run dev,浏览器访问http://localhost:8080即可。
  • 自定义:可自定义API路由、消息格式、客户端鉴权等,满足不同项目需求。
  • 扩展协议:如需MQTT、WebRTC等协议,可参考当前模块化设计扩展。
相关推荐
yume_sibai9 小时前
大屏数据可视化 - 边框红绿呼吸灯实现详解
前端·信息可视化·typescript
竹林8189 小时前
从 ethers.js 迁移到 Viem:一个签名验证 Bug 让我彻底放弃旧爱
javascript
Hyyy9 小时前
很多Desktop都在上的Computer Use是什么
前端·llm
慢功夫9 小时前
开篇:VS Code 为什么不是一个普通 React App
前端·visual studio code
你挚爱的强哥9 小时前
Vue2 实现 1.5s 十连击监听(连续点击若干次),封装通用可复用点击检测工具,不用 data!Vue 封装通用连击监听方法,支持自定义时长与点击次数
前端·javascript·vue.js
程序员张39 小时前
SpringBoot集成BCrypt密码加密库
java·spring boot·后端
CaffeinePro10 小时前
FastAPI数据库集成SQLAlchemy异步ORM全方案
后端·fastapi
小旭Coding10 小时前
凌晨告警轰炸!Go 服务协程只增不减,内存持续暴涨直至 OOM
后端
半个落月10 小时前
用 LangChain.js 手写一个能读写文件和执行命令的 Mini Cursor
javascript·人工智能·后端
天外天-亮10 小时前
HBuilder X 使用 uview-plus 方式
开发语言·javascript·hbuilder x·uview-plus