# ChatRoom **Repository Path**: xuxml/chat-room ## Basic Information - **Project Name**: ChatRoom - **Description**: 基于.NET 10 的一个简洁高效的 MQTT 聊天室应用。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MQTT 聊天室项目 一个基于 MQTT 协议的实时聊天室应用,使用 .NET 10 和 Windows Forms 开发。 ## 项目结构 ``` MQTT_ChatRoom/ ├── ModernChatRoom/ # 主聊天室项目(现代化版本) │ ├── Models/ # 数据模型 │ ├── Services/ # MQTT 服务 │ ├── UI/ # 用户界面 │ ├── Program.cs # 程序入口 │ └── README.md # 项目详细说明 ``` ## 项目概述 ### ModernChatRoom (推荐使用) 现代化的聊天室应用,具有以下特点: #### 核心功能 - **多房间支持** - 支持连接到不同的 MQTT 聊天室 - **实时通信** - 基于 MQTT 协议的实时消息传输 - **消息历史** - 本地保存聊天记录 - **自动重连** - 连接断开后自动尝试重连 #### 技术特性 - **.NET 10** - 使用最新的 .NET 框架 - **Windows Forms** - 简洁的桌面应用界面 - **MQTTnet** - 稳定的 MQTT 客户端库 - **异步编程** - 全异步设计,UI 响应流畅 - **线程安全** - 使用 SemaphoreSlim 保证线程安全 #### 界面特点 - 简洁现代的 UI 设计 - 蓝色主题配色 - 扁平化按钮风格 - 响应式布局设计 ## 快速开始 ### 环境要求 - .NET 10 SDK - Visual Studio 2022 或更高版本 - Windows 操作系统 ### 克隆项目 ```bash git clone cd MQTT_ChatRoom ``` ### 构建项目 ```bash # 还原 NuGet 包 dotnet restore ModernChatRoom/ModernChatRoom.csproj # 构建项目 dotnet build ModernChatRoom/ModernChatRoom.csproj ``` ### 运行项目 ```bash # 运行现代化聊天室 dotnet run --project ModernChatRoom/ModernChatRoom.csproj ``` ## 使用说明 1. **启动应用程序** - 运行可执行文件或使用上述命令启动 2. **连接聊天室** - 输入你的昵称 - 选择要加入的房间 - 点击"连接"按钮 3. **发送消息** - 在底部输入框输入消息 - 按 `Ctrl+Enter` 或点击"发送"按钮 4. **断开连接** - 点击"断开"按钮退出当前聊天室 5. **清空消息** - 点击"清空"按钮清除所有历史消息 ## 可用聊天室 项目预配置了以下聊天室: | 房间名称 | 服务器 | 端口 | 主题 | |---------|--------|------|------| | 公共大厅 | test.mosquitto.org | 1883 | chat/room | | 私密房间 | 192.168.0.150 | 1883 | chat/private | | 工作讨论 | test.mosquitto.org | 1883 | chat/work | | 游戏频道 | test.mosquitto.org | 1883 | chat/gaming | > **注意**: 私密房间使用的是本地 IP,请根据实际情况修改。 ## 配置自定义聊天室 编辑 `ModernChatRoom/UI/ModernChatForm.cs` 文件中的 `_availableRooms` 列表: ```csharp private readonly List _availableRooms = new() { new ChatRoom { Name = "我的房间", Server = "your-mqtt-server.com", Port = 1883, Topic = "chat/myroom", Description = "自定义房间" } }; ``` ## 项目依赖 - **MQTTnet** (4.3.7.1207) - MQTT 客户端库 - **Newtonsoft.Json** (13.0.3) - JSON 序列化 ## 架构说明 ### 分层架构 ``` UI Layer (ModernChatForm) ↓ Service Layer (MqttChatService) ↓ Model Layer (ChatMessage, ChatRoom) ``` ### 主要组件 - **ModernChatForm**: 主窗口,处理用户交互 - **MqttChatService**: MQTT 服务封装,处理连接和消息 - **ChatMessage**: 消息模型,定义消息结构 - **ChatRoom**: 聊天室模型,定义房间配置 ## 消息格式 应用使用 JSON 格式传输消息: ```json { "userName": "用户名", "content": "消息内容", "timestamp": "2025-01-01T10:00:00", "type": "message|join|leave|system" } ``` ### 消息类型 - **message**: 普通聊天消息 - **join**: 用户加入通知 - **leave**: 用户离开通知 - **system**: 系统消息 ## 兼容性说明 应用同时支持: - **JSON 格式消息**: 与本应用互通 - **纯文本消息**: 兼容旧版本或其他客户端 ## 故障排除 ### 连接失败 1. 检查网络连接 2. 确认 MQTT 服务器地址和端口正确 3. 检查防火墙设置 4. 尝试使用公共测试服务器 (test.mosquitto.org) ### 消息收不到 1. 确认已成功连接(状态显示为绿色) 2. 检查房间主题是否正确 3. 确认服务器正在运行 4. 查看状态栏的错误提示 ### 界面显示异常 1. 确认已安装 .NET 10 SDK 2. 尝试重新构建项目 3. 检查系统字体是否正常 ## 开发指南 ### 添加新功能 1. Fork 项目 2. 创建功能分支 3. 实现新功能 4. 提交 Pull Request ### 代码规范 - 使用 C# 14.0 语法特性 - 遵循 .NET 命名约定 - 使用 async/await 进行异步编程 - 添加适当的注释和文档 ## 版本历史 ### v2.0 (当前版本) - 简化界面,移除不必要的功能 - 优化性能和用户体验 - 改进消息处理逻辑 - 增强兼容性 ### v1.0 - 基础聊天功能 - 多房间支持 - MQTT 协议实现 详细更新日志请查看 [CHANGELOG.md](ModernChatRoom/CHANGELOG.md) ## 贡献 欢迎贡献代码!请遵循以下步骤: 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 许可证 本项目采用 MIT 许可证 - 详见 LICENSE 文件 ## 联系方式 - 项目主页: [GitHub Repository] - 问题反馈: [Issues Page] ## 致谢 - MQTTnet 团队提供优秀的 MQTT 客户端库 - Eclipse Mosquitto 提供免费的测试服务器 - .NET 团队持续改进框架 --- **祝你使用愉快!** 💬