一个基于 WebSocket 的实时聊天室应用,支持多频道聊天、管理员功能和用户管理。
- 🆓 自动用户名分配 - 首次进入自动生成5位随机用户名
- 🔄 多频道切换 - 支持在多个频道间自由切换
- 👀 用户列表查看 - 查看指定频道的在线用户
- 💬 实时消息收发 - 基于 WebSocket 的实时通信
- 🎨 彩色消息显示 - 不同类型消息使用不同颜色区分
- 🔐 管理员认证 - 使用密码验证管理员身份
- 👮 用户管理 - 踢出用户、断开用户连接
- 📢 频道管理 - 清退频道、关闭频道
- 👁️ 全服监控 - 查看全服在线用户
- 📩 私信功能 - 向指定用户发送私信
- 后端: Python + asyncio + websockets
- 前端: 纯 Python 命令行客户端
- 通信: WebSocket + JSON
- 安全: SHA-256 密码哈希
git clone https://github.com/DHEnry-FMCRAFT/websocket-chat
cd websocket-chatpip install websockets请编辑server.py中的ALLOWED_CHANNELS数组,逗号分隔,引号包裹允许的频道,注意允许的频道一定要包含public
请编辑hash.py中的test_string变量,为初始密码,然后使用以下代码运行
python hash.py然后将生成后的hash设置为server.py中的ADMIN_PASSWORD_HASH变量的值,然后保存server.py
python server.py服务器默认监听 0.0.0.0:8765,允许的频道:public、1、2、3
python client.py| 命令 | 功能 | 示例 |
|---|---|---|
::login [用户名] |
设置用户名 | ::login Alice |
::choose [频道ID] |
切换频道 | ::choose 2 |
::list [频道ID] |
查看频道用户 | ::list 1 |
exit / quit |
退出聊天 | exit |
| 命令 | 功能 | 示例 |
|---|---|---|
::lists |
查看全服用户 | ::lists |
::say [频道] [用户] [消息] |
发送私信 | ::say 1 Bob "Hello" |
::kicks [频道] [用户] [理由] |
踢出用户 | ::kicks 1 Bob "违规发言" |
::kick [频道] [理由] |
清退频道 | ::kick 1 "频道维护" |
::closes [频道] [用户] [理由] |
断开用户 | ::closes 1 Bob "多次违规" |
::close [频道] [理由] |
关闭频道 | ::close 1 "封禁频道" |
要使用管理员功能,请使用用户名 administrator 登录,系统会提示输入密码。
- 默认端口: 8765
- 允许频道: public, 1, 2, 3
- 管理员密码哈希: 在
server.py中配置
- 调试模式: 修改
DEBUG变量切换默认服务器地址,1为使用localhost:8765,用于本地调试server.py,0为需要用户自行输入服务器地址 - 消息颜色: 不同类型消息使用不同颜色标识
- 连接被拒绝 - 确保服务器已启动且地址正确
- 用户名已存在 - 更换用户名或切换到其他频道
- 频道不允许 - 只允许使用预定义的频道ID
服务器会在控制台输出运行状态和错误信息,客户端会显示连接状态和错误提示。
websocket-chat/
├── server.py # 服务器主程序
├── client.py # 客户端主程序
└── README.md # 项目说明
- 🔐 添加用户注册系统
- 💾 实现消息持久化存储
- 🎨 开发 Web 界面版本
- 🔔 添加消息通知功能
欢迎提交 Issue 和 Pull Request 来改进这个项目!
- 登录时直接进入频道会导致无法发送消息,需要先自定义一个用户名