xiangyixiangqin/SignalR快速启动指南.md
2026-01-14 20:23:13 +08:00

261 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```
---
**祝你测试顺利!🎊**