网络匿名聊天室
公司内网无法上网和同事愉快的聊天,畅所欲言?
给大家推荐一款网络匿名聊天室
# 局域网聊天室
一个基于WebSocket的局域网聊天室应用,支持实时消息收发、文件传输、用户列表显示、历史消息记录等功能。
## 功能特点
- **实时聊天**:支持文本消息和文件传输
- **用户管理**:显示在线用户列表,支持修改昵称
- **消息状态**:显示消息的发送、送达和已读状态
- **稳定性**:包含心跳机制和自动重连功能
- **历史消息**:支持历史消息记录、分页加载和时间范围查询
- **响应式设计**:适配不同屏幕尺寸的设备
## 技术栈
- **前端**:HTML/CSS/JavaScript,Tailwind CSS v3,Font Awesome
- **后端**:Python,websockets库
- **通信协议**:WebSocket
## 安装依赖
```bash
pip install websockets
```
## 使用方法
### 1. 启动服务器
```bash
python server.py
```
服务器将在8888端口启动,并监听所有网络接口。
### 2. 连接客户端
1. 打开 `client.html` 文件
2. 点击右上角的设置按钮
3. 输入服务器的IP地址(默认端口为8888)
4. 点击"连接"按钮
### 3. 基本操作
- **修改昵称**:在设置面板中输入新昵称并点击"保存"
- **发送消息**:在输入框中输入文本并按Enter或点击发送按钮
- **发送文件**:点击附件图标,选择要发送的文件
- **查看在线用户**:左侧面板显示当前在线的所有用户
## 技术实现细节
### 历史消息功能
#### 服务器端实现
- **消息存储**:使用文件系统存储历史消息,每个文件包含100条消息
- **目录结构**:消息存储在 `message_history/` 目录下
- **内存缓存**:服务器内存中缓存最近50条消息,提高访问速度
- **自动加载**:服务器启动时自动加载最近的历史消息
- **消息同步**:新用户加入时自动发送最近20条历史消息
#### 客户端实现
- **自动接收**:连接成功后自动接收历史消息
- **分页加载**:支持点击"加载更多"获取更早的历史消息
- **本地存储**:使用localStorage存储聊天记录
- **时间范围查询**:支持按时间范围筛选历史消息
### 服务器端
- 使用 `websockets` 库创建WebSocket服务器
- 维护在线用户列表和用户活动时间
- 实现定期清理不活动用户的机制(每隔60秒清理一次)
- 支持多种消息类型:join、message、messageRead、typing、updateUsername、heartbeat
### 客户端
- 使用原生WebSocket API与服务器通信
- 实现自动重连机制,使用指数退避策略
- 心跳机制确保连接稳定性
- 使用localStorage存储聊天历史记录
- 响应式设计适配不同设备
## 注意事项
1. 确保所有用户都在同一个局域网内
2. 服务器需要有一个固定的IP地址,以便其他用户连接
3. 防火墙设置可能需要允许8888端口的通信
4. 文件传输功能目前仅支持小型文件,因为文件是通过DataURL编码传输的
## 日志级别配置
### 服务器端 (server.py)
服务器使用日志级别系统来控制输出量:
- `ERROR`: 仅错误消息(默认)
- `WARN`: 警告消息 + 错误
- `INFO`: 信息消息 + 警告 + 错误
- `DEBUG`: 调试消息 + 所有其他级别
要更改日志级别,请修改 `server.py` 中的 `CURRENT_LOG_LEVEL` 变量:
```python
# 默认值(只输出错误信息)
CURRENT_LOG_LEVEL = LOG_LEVEL['ERROR']
# 要输出更多信息,可以设置为:
CURRENT_LOG_LEVEL = LOG_LEVEL['INFO'] # 显示信息、警告和错误
# 或
CURRENT_LOG_LEVEL = LOG_LEVEL['DEBUG'] # 显示所有日志信息
```
### 客户端 (client.html)
客户端也有日志级别配置:
- `LOG_LEVEL.ERROR`: 仅错误消息(默认)
- `LOG_LEVEL.WARN`: 警告消息 + 错误
- `LOG_LEVEL.INFO`: 信息消息 + 警告 + 错误
- `LOG_LEVEL.DEBUG`: 调试消息 + 所有其他级别
要更改日志级别,请修改 `client.html` 中的 `CURRENT_LOG_LEVEL` 变量:
```javascript
// 默认值(只输出错误信息)
const CURRENT_LOG_LEVEL = LOG_LEVEL.ERROR;
// 要输出更多信息,可以设置为:
const CURRENT_LOG_LEVEL = LOG_LEVEL.INFO; // 显示信息、警告和错误
// 或
const CURRENT_LOG_LEVEL = LOG_LEVEL.DEBUG; // 显示所有日志信息
```
## 更新历史
#### 新增功能
- **历史消息功能**:实现了服务器端消息持久化存储
- **历史消息加载**:新用户加入时自动加载最近20条历史消息
- **分页加载**:支持分页加载更多历史消息
- **时间范围查询**:支持按时间范围查询历史消息
#### 修复与改进
- 修复了心跳机制不匹配导致的频繁断连问题
- 优化了连接管理和异常处理
- 改进了消息状态显示(发送、送达、已读)
- 优化了用户界面,增强了视觉体验
### v1.0.0 (初始版本)
#### 核心功能
- 实时文本聊天
- 文件传输
- 用户列表显示
- 消息状态显示
- 自动重连机制
- 响应式设计

其中包含python的服务器,以及html网页端代码
首先你的电脑电脑python版本最好在3.11以上,其次需要安装websockets的python库,指令:pip install websockets

运行python脚本服务器,启动,如何点击client.html,最好用原生浏览器Microsoft Edge打开,大致是这个界面,然后获取你电脑的IP地址,端口号默认8888,需要修改可以在python脚本中修改,有注释



然后将client.html发给你的好基友,保持两台设备在同一网络下,你们就可以愉快的聊天了,注意浏览器需要更新最新版本,有时候ui会有bug,暂时没有修复,无伤大雅。。。
更多推荐



所有评论(0)