# SignalR 快速启动指南 **5 分钟快速测试 SignalR 实时通讯功能** --- ## 🚀 快速启动步骤 ### 步骤 1: 启动后端服务 ```bash # 进入后端目录 cd server/src/XiangYi.AppApi # 运行服务 dotnet run ``` **预期输出**: ``` info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. ``` --- ### 步骤 2: 配置小程序 打开 `miniapp/config/index.js`,确认配置: ```javascript const CURRENT_ENV = 'development' // 使用开发环境 const ENV = { development: { API_BASE_URL: 'http://localhost:5000/api/app', // ... } } ``` --- ### 步骤 3: 启动小程序 1. 打开 HBuilderX 或微信开发者工具 2. 导入 `miniapp` 目录 3. 点击"运行" → "运行到浏览器" 或 "运行到微信开发者工具" --- ### 步骤 4: 登录测试账号 **准备 2 个测试账号**: - 账号 A: 手机号 13800138001 - 账号 B: 手机号 13800138002 **登录步骤**: 1. 打开小程序 2. 输入手机号 3. 输入验证码(开发环境可能是固定的,如 123456) 4. 登录成功 --- ### 步骤 5: 测试实时消息 #### 5.1 打开聊天页面 **账号 A**: 1. 进入"消息"页面 2. 点击与账号 B 的会话(如果没有,先发起聊天) **账号 B**: 1. 同样进入与账号 A 的聊天页面 #### 5.2 发送消息 **账号 A**: 1. 在输入框输入:"你好" 2. 点击"发送" **账号 B**: - **立即**看到账号 A 发送的消息(无需刷新) - 消息显示在聊天列表底部 ✅ **如果看到实时消息,说明 SignalR 工作正常!** --- ### 步骤 6: 测试交换功能 **账号 A**: 1. 点击"交换微信"按钮 **账号 B**: - **立即**看到交换微信请求卡片 - 点击"同意"按钮 **账号 A**: - **立即**看到交换结果 - 显示账号 B 的微信号 ✅ **如果看到实时交换响应,说明 SignalR 完全正常!** --- ## 🔍 查看日志 ### 后端日志 ```bash # 查看后端控制台输出 # 应该看到类似以下日志: info: XiangYi.AppApi.Hubs.ChatHub[0] 用户连接: UserId=1, ConnectionId=abc123 info: XiangYi.AppApi.Controllers.ChatController[0] 消息已通过SignalR推送: MessageId=123, ReceiverId=2 ``` ### 前端日志 打开浏览器控制台(F12),应该看到: ``` [SignalR] 正在连接: ws://localhost:5000/hubs/chat [SignalR] WebSocket 连接已打开 [SignalR] 握手成功 [Chat] SignalR 连接成功 [SignalR] 已加入会话: 123 [Chat] 收到新消息: { messageId: 123, content: "你好", ... } ``` --- ## ❌ 常见问题 ### 问题 1: 连接失败 **错误信息**: `[SignalR] WebSocket 创建失败` **解决方案**: 1. 确认后端服务已启动 2. 检查 API_BASE_URL 配置是否正确 3. 检查是否已登录(Token 是否有效) ```bash # 检查后端服务 curl http://localhost:5000/api/app/config/system # 应该返回 JSON 数据 ``` --- ### 问题 2: 收不到消息 **可能原因**: SignalR 未连接或事件监听未注册 **解决方案**: 1. 查看控制台是否有 `[Chat] SignalR 连接成功` 日志 2. 确认已进入聊天页面(会自动连接) 3. 刷新页面重试 --- ### 问题 3: Token 过期 **错误信息**: `401 Unauthorized` **解决方案**: 1. 重新登录 2. 检查 Token 是否正确存储 ```javascript // 在控制台执行 console.log(uni.getStorageSync('token')) // 应该返回 JWT Token ``` --- ## 📊 验证清单 完成以下测试,确认 SignalR 功能正常: - [ ] 后端服务启动成功 - [ ] 小程序启动成功 - [ ] 账号 A 登录成功 - [ ] 账号 B 登录成功 - [ ] SignalR 连接成功(查看日志) - [ ] 账号 A 发送消息,账号 B 实时收到 - [ ] 账号 B 发送消息,账号 A 实时收到 - [ ] 账号 A 发起交换请求,账号 B 实时收到 - [ ] 账号 B 响应交换,账号 A 实时收到结果 - [ ] 断开网络后自动重连 --- ## 🎉 成功标志 如果你看到以下现象,说明 SignalR 已成功运行: 1. ✅ 控制台显示 `[Chat] SignalR 连接成功` 2. ✅ 发送消息后,对方**无需刷新**立即看到 3. ✅ 交换请求和响应**实时推送** 4. ✅ 断开网络后**自动重连** --- ## 📝 下一步 SignalR 功能已经完整实现,你可以: 1. **进行完整测试** - 参考 `miniapp/SignalR测试指南.md` 2. **部署到生产环境** - 参考 `server/SignalR生产环境配置.md` 3. **添加更多功能** - 如图片发送、语音消息等 --- ## 💡 提示 - 开发环境使用 `ws://`(WebSocket) - 生产环境必须使用 `wss://`(WebSocket Secure) - 确保防火墙允许 WebSocket 连接 - 建议使用 Chrome 浏览器进行测试(F12 查看日志) --- ## 📞 技术支持 如果遇到问题,请检查: 1. **后端日志** - `server/src/XiangYi.AppApi/bin/Debug/net8.0/logs/` 2. **前端日志** - 浏览器控制台(F12) 3. **网络请求** - 浏览器 Network 面板 **常用调试命令**: ```bash # 查看后端进程 ps aux | grep dotnet # 查看端口占用 netstat -tlnp | grep 5000 # 测试 API 连接 curl http://localhost:5000/api/app/config/system # 测试 WebSocket 连接(需要安装 wscat) npm install -g wscat wscat -c ws://localhost:5000/hubs/chat ``` --- **祝你测试顺利!🎊**