04-功能详解
功能详解
SignalR Hub 协议
| Type | 名称 | 说明 |
|---|---|---|
| 1 | Invocation | 方法调用 |
| 2 | StreamItem | 流式传输项 |
| 3 | Completion | 调用完成(含返回值或错误) |
| 4 | StreamInvocation | 流式调用 |
| 5 | CancelInvocation | 取消调用 |
| 6 | Ping | 心跳 |
| 7 | Close | 关闭连接 |
NexSignalR 主要处理 Type 1(Invocation),用于方法调用和接收。
握手协议
连接建立后,客户端首先发送握手请求:
{"protocol":"json","version":1}\x1E
服务端响应握手成功或失败。NexSignalR 在客户端模式下自动完成握手。
消息分隔符
SignalR 使用 \x1E(ASCII 30, Record Separator)作为每条 JSON 消息的终止符。程序自动处理此分隔符。
客户端模式详解
- WebSocket 连接到 Hub URL
- 发送握手请求
{"protocol":"json","version":1} - 接收握手响应
- 连接建立,可以发送方法调用
方法调用
发送格式为:
{
"type": 1,
"invocationId": "0",
"target": "MethodName",
"arguments": [...]
}
程序自动生成 invocationId 并递增。用户只需填写方法名和参数。
方法订阅
- 订阅后,当服务端推送方法调用时,程序会识别并高亮显示。订阅列表在左侧管理:
- 添加:输入方法名,点击 添加订阅
- 移除:选中列表中的方法,点击 取消订阅
服务端模式详解
- 设置端口和路径
- 点击 监听
- 等待客户端连接
- 客户端连接后出现在列表中
客户端管理
- 查看已连接客户端 IP:Port
- 选中客户端后发送消息
- 断开选中客户端
数据可视化
- 在左侧 数据可视化 面板中勾选 启用图表
- 图表区域显示在日志下方
图表类型
| 类型 | 适用场景 |
|---|---|
| 折线图 | 连续数据趋势 |
| 平滑曲线 | 更平滑的展示 |
| 散点图 | 离散数据点分布 |
| 面积图 | 强调数据量的变化 |
| 柱状图 | 分类统计 |
| 饼图 | 占比分析 |
提取规则
SignalR 消息多为 JSON 格式,推荐使用 JSON 路径 规则类型:
| 类型 | 说明 | 示例表达式 |
|---|---|---|
| JSON 路径 | 从 JSON 消息中提取字段 | arguments[0].value |
| 正则表达式 | 从消息文本中匹配数值 | \d+\.?\d* |
时间窗口
调整图表显示的时间范围:5 秒 ~ 600 秒(10 分钟)。
Hex 模式
开启 Hex 显示后,可以看到 SignalR 消息的原始字节,包括 \x1E 分隔符。
与 ASP.NET Core SignalR 互操作
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
NexSignalR 调用
- 方法名:
SendMessage - 参数:
{ "user": "Alice", "message": "Hello!" } - 订阅:
ReceiveMessage(接收其他人的消息)