Files
ws.tootaio.com/README.md
2025-10-07 11:59:55 +08:00

3.7 KiB
Raw Permalink Blame History

好的 👍 我来帮你写一份专业的 README.md,既能让开发者快速上手,又能作为项目的正式说明文档。这里我会结合你的代码仓库结构和实现特点来写。


README.md

🚀 WebSocket + Redis Pub/Sub Service

本项目是一个基于 WebSocketRedis 的实时消息推送服务,支持多客户端订阅、消息分发与发布。 通过 docker-compose 可一键启动服务,方便部署与扩展。


📂 项目结构

.
├── client/
│   └── test-client.js      # WebSocket 客户端示例(测试用)
├── server/
│   ├── Dockerfile          # 服务端 Docker 构建配置
│   ├── index.js            # WebSocket + Redis 服务端逻辑
│   └── package.json        # Node.js 依赖配置
└── docker-compose.yml      # 服务编排配置

⚙️ 功能特性

  • 🔑 认证机制:客户端需通过 auth 消息声明 app 名称。
  • 📡 订阅/取消订阅:客户端可动态订阅频道,实时接收消息。
  • 📤 消息发布:通过 Redis Pub/Sub 将消息广播至所有订阅者。
  • 🛠 易于扩展:支持分布式部署,多个 WebSocket 节点可共享 Redis。

🚀 快速开始

1 启动服务

确保已安装 DockerDocker Compose

docker compose up -d

服务启动后默认监听:

ws://localhost:8080

2 运行测试客户端

node client/test-client.js

预期输出:

✅ 已连接 WebSocket
📩 收到消息: {"type":"auth_ok","app":"demo"}
📩 收到消息: {"type":"subscribed","channel":"chat"}
📩 收到消息: {"app":"demo","channel":"chat","event":"message","data":{"text":"Hello Redis WS 🚀"}}

📡 协议说明

所有消息均为 JSON 格式,字段如下:

🔑 认证

{ "type": "auth", "app": "demo" }

服务端响应:

{ "type": "auth_ok", "app": "demo" }

📌 订阅频道

{ "type": "subscribe", "channel": "chat" }

服务端响应:

{ "type": "subscribed", "channel": "chat" }

📤 发布消息

{
  "type": "publish",
  "app": "demo",
  "channel": "chat",
  "event": "message",
  "data": { "text": "Hello Redis WS 🚀" }
}

被订阅该频道的客户端将收到:

{
  "app": "demo",
  "channel": "chat",
  "event": "message",
  "data": { "text": "Hello Redis WS 🚀" }
}

🐳 环境变量

通过 docker-compose.yml 设置:

变量名 默认值 说明
REDIS_HOST main_redis Redis 主机地址
REDIS_PORT 6379 Redis 端口
REDIS_PASSWORD 空字符串 Redis 密码

📦 构建与部署

本地构建镜像

docker build -t websocket-server ./server

运行容器

docker run -d -p 8080:8080 --name ws-server websocket-server

📖 技术栈

  • WebSocket (ws): 提供实时通信能力
  • Redis (ioredis): 实现分布式消息队列与广播
  • Docker + Docker Compose: 快速部署与服务编排

📝 注意事项

  • 本项目的 Repomix 合并文件仅供分析和审查,请勿直接修改。
  • 如果需要调整功能,请修改原始仓库中的对应文件。
  • 确保 Redis 服务正常运行,否则消息发布/订阅功能不可用。

📜 License

ISC


要不要我帮你在 README 里再加一张 架构图WebSocket + Redis Pub/Sub 流程)?这样别人一眼就能看懂整个系统的消息流向 🔄