logo
0
0
Login

WebRTC 匿名聊天室

一个基于Node.js和WebRTC的多人实时匿名聊天室应用,支持安全的点对点通信。

功能特性

  • 🔒 完全匿名 - 自动生成匿名用户名,不收集任何个人信息
  • 🌐 WebRTC技术 - 使用P2P通信,减少服务器负担
  • 👥 多人聊天 - 支持创建和加入房间,最多10人同时在线
  • 💬 实时消息 - 基于Socket.io的实时消息传输
  • 📱 响应式设计 - 支持桌面和移动设备
  • 🎨 现代化UI - 美观的用户界面设计

技术栈

  • 后端: Node.js, Express, Socket.io
  • 前端: HTML5, CSS3, JavaScript, WebRTC
  • 通信: WebRTC (P2P), Socket.io (信令)

快速开始

1. 安装依赖

npm install

2. 启动服务器

npm start

或者使用开发模式(需要安装nodemon):

npm run dev

3. 访问应用

打开浏览器访问: http://localhost:3000

使用说明

创建房间

  1. 点击"创建新房间"按钮
  2. 系统会自动生成房间ID
  3. 邀请朋友加入你的房间

加入房间

  1. 输入房间ID
  2. 点击"加入房间"按钮
  3. 开始与房间内的用户聊天

聊天功能

  • 在消息输入框中输入文字
  • 按Enter键或点击发送按钮
  • 查看在线用户列表
  • 实时接收新消息

项目结构

/workspace/ ├── server.js # 主服务器文件 ├── package.json # 项目配置 ├── README.md # 项目说明 └── public/ # 静态文件目录 ├── index.html # 主页面 ├── style.css # 样式文件 └── script.js # 前端逻辑

WebRTC 实现原理

信令服务器

  • 使用Socket.io作为信令服务器
  • 处理房间创建、用户加入/离开
  • 转发WebRTC信令消息(offer/answer/ice-candidate)

P2P连接

  1. 信令交换: 通过Socket.io交换SDP信息
  2. ICE候选: 交换网络连接信息
  3. 建立连接: 浏览器间直接建立P2P连接
  4. 数据传输: 消息通过P2P连接传输

匿名机制

  • 自动生成随机用户名(如"神秘访客")
  • 不存储用户身份信息
  • 每次连接生成新的匿名ID

配置选项

环境变量

PORT=3000 # 服务器端口(默认3000)

自定义配置

可以在server.js中修改:

  • 房间人数限制
  • 匿名用户名生成规则
  • ICE服务器配置

开发说明

添加新功能

  1. server.js中添加Socket事件处理
  2. script.js中实现前端逻辑
  3. 更新UI样式(style.css

扩展WebRTC功能

项目已预留WebRTC音视频通话接口,可以扩展:

  • 语音聊天
  • 视频通话
  • 屏幕共享
  • 文件传输

安全考虑

  • 使用HTTPS确保WebRTC安全(生产环境)
  • 限制房间人数防止滥用
  • 不存储敏感用户信息
  • 输入内容过滤和转义

浏览器支持

  • Chrome 60+
  • Firefox 55+
  • Safari 11+
  • Edge 79+

许可证

MIT License

贡献

欢迎提交Issue和Pull Request来改进这个项目!