04-功能详解

功能详解

SignalR Hub 协议

Type名称说明
1Invocation方法调用
2StreamItem流式传输项
3Completion调用完成(含返回值或错误)
4StreamInvocation流式调用
5CancelInvocation取消调用
6Ping心跳
7Close关闭连接

NexSignalR 主要处理 Type 1(Invocation),用于方法调用和接收。

握手协议

连接建立后,客户端首先发送握手请求:

{"protocol":"json","version":1}\x1E

服务端响应握手成功或失败。NexSignalR 在客户端模式下自动完成握手。

消息分隔符

SignalR 使用 \x1E(ASCII 30, Record Separator)作为每条 JSON 消息的终止符。程序自动处理此分隔符。

客户端模式详解

  1. WebSocket 连接到 Hub URL
  2. 发送握手请求 {"protocol":"json","version":1}
  3. 接收握手响应
  4. 连接建立,可以发送方法调用

方法调用

发送格式为:

{
"type": 1,
"invocationId": "0",
"target": "MethodName",
"arguments": [...]
}

程序自动生成 invocationId 并递增。用户只需填写方法名和参数。

方法订阅

服务端模式详解

  1. 设置端口和路径
  2. 点击 监听
  3. 等待客户端连接
  4. 客户端连接后出现在列表中

客户端管理

数据可视化

  1. 在左侧 数据可视化 面板中勾选 启用图表
  2. 图表区域显示在日志下方

图表类型

类型适用场景
折线图连续数据趋势
平滑曲线更平滑的展示
散点图离散数据点分布
面积图强调数据量的变化
柱状图分类统计
饼图占比分析

提取规则

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 调用