项目地址
DHEnry-FMCRAFT/websocket-chat: 来自AI编写的websocket版的聊天程序
💬 WebSocket 聊天室应用
一个基于 WebSocket 的实时聊天室应用,支持多频道聊天、管理员功能和用户管理。
🚀 功能特性
👥 用户功能
- 🆓 自动用户名分配 - 首次进入自动生成5位随机用户名
- 🔄 多频道切换 - 支持在多个频道间自由切换
- 👀 用户列表查看 - 查看指定频道的在线用户
- 💬 实时消息收发 - 基于 WebSocket 的实时通信
- 🎨 彩色消息显示 - 不同类型消息使用不同颜色区分
⚡ 管理员功能
- 🔐 管理员认证 - 使用密码验证管理员身份
- 👮 用户管理 - 踢出用户、断开用户连接
- 📢 频道管理 - 清退频道、关闭频道
- 👁️ 全服监控 - 查看全服在线用户
- 📩 私信功能 - 向指定用户发送私信
🛠️ 技术栈
- 后端: Python + asyncio + websockets
- 前端: 纯 Python 命令行客户端
- 通信: WebSocket + JSON
- 安全: SHA-256 密码哈希
📦 安装与运行
1. 克隆项目
git clone https://github.com/DHEnry-FMCRAFT/websocket-chat
cd websocket-chat2. 安装依赖
pip install websockets3. 配置服务器的允许频道
请编辑server.py中的ALLOWED_CHANNELS数组,逗号分隔,引号包裹允许的频道,注意允许的频道一定要包含public
4. 配置服务器管理员密码HASH
请编辑hash.py中的test_string变量,为初始密码,然后使用以下代码运行
python hash.py然后将生成后的hash设置为server.py中的ADMIN_PASSWORD_HASH变量的值,然后保存server.py
5. 启动服务器
python server.py服务器默认监听 0.0.0.0:8765,允许的频道:public、1、2、3
6. 启动客户端
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 登录,系统会提示输入密码。
⚙️ 配置说明
当前默认EXAMPLE服务器配置
- 默认端口: 8765
- 允许频道: public, 1, 2, 3
- 管理员密码哈希: 在
server.py中配置
客户端配置
- 调试模式: 修改
DEBUG变量切换默认服务器地址,1为使用localhost:8765,用于本地调试server.py,0为需要用户自行输入服务器地址 - 消息颜色: 不同类型消息使用不同颜色标识
🐛 故障排除
常见问题
- 连接被拒绝 - 确保服务器已启动且地址正确
- 用户名已存在 - 更换用户名或切换到其他频道
- 频道不允许 - 只允许使用预定义的频道ID
日志查看
服务器会在控制台输出运行状态和错误信息,客户端会显示连接状态和错误提示。
📝 开发说明
项目结构
websocket-chat/
├── server.py # 服务器主程序
├── client.py # 客户端主程序
└── README.md # 项目说明来源
这个项目其实是 $Deepseek \times Doubao$ 一起写出来的(乱用LaTex),也是有很多的BUG,但也是在我的命令下写出来的
这个项目最终会放到 $FMCRAFT$
历程
2025年10月1日 PR V1.0 Release V1.0 · DHEnry-FMCRAFT/websocket-chat V1.0
已知BUG
- 登录时直接进入频道会导致无法发送消息,需要先自定义一个用户名
此处评论已关闭