HubConnection
HubConnection 是客户端的主入口。它管理连接状态机、协商 → 选传输 →
连接 → 握手流程、心跳、服务端超时检测与自动重连。
创建连接
from aiosignalr.client import HubConnection
connection = HubConnection()
可以在构造时配置选项与协议:
from aiosignalr.client import HubConnection, HubConnectionOptions
connection = HubConnection(
protocol="json", # 或 "messagepack",或协议实例
options=HubConnectionOptions(
handshake_timeout=15.0,
server_timeout=30.0,
keep_alive_interval=15.0,
),
)
协议
| 协议 | 值 | 传输格式 | 说明 |
|---|---|---|---|
| JSON | "json" | 文本 | 默认,可读性好,0x1E 分隔 |
| MessagePack | "messagepack" | 二进制 | 大流量场景更小更快 |
也可以传 IHubProtocol 实例(如自定义协议)。
启动连接
await connection.start(
"http://127.0.0.1:8080/hub",
access_token_factory=lambda: "my-token",
headers={"X-Custom": "value"},
transports={"WebSockets", "LongPolling"},
)
access_token_factory在每次 HTTP / WebSocket 请求前调用;返回非None时作为Authorization: Bearer <token>发送。可以是协程。transports限制客户端允许使用的传输。skip_negotiation=True直接连 WebSocket URL,跳过协商(需要 WebSockets 传输)。
连接不在 DISCONNECTED 状态时调用 start() 会抛异常。
停止连接
await connection.stop()
stop() 发送优雅的 Close 消息、停止传输与定时器、以
ConnectionClosed("Connection stopped.") 使所有挂起调用失败,并触发 on_close。