> ## Documentation Index
> Fetch the complete documentation index at: https://dexbuilder.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Broker WebSocket 认证

> 使用 Broker API Key 和用户钱包地址订阅私有 WebSocket 频道。

公开行情频道无需认证。订阅私有频道时，Broker 使用专用的 `broker_api_key` 认证方式，并在 `auth.wallet_address` 中提供目标终端用户的钱包地址。认证服务校验钱包属于当前 Broker 后，私有消息才会以对应用户身份订阅。

## 签名

`t` 为请求中的 Unix 毫秒时间戳。签名原文中的 `time` 使用 `floor(t / 1000)`，钱包地址按 URL Query 规则编码，字段顺序固定：

```text theme={null}
channel=pred.orders&event=subscribe&time=<Unix秒>&wallet_address=<URL编码的钱包地址>
```

使用 Broker API Secret 计算 `HexEncode(HMAC_SHA512(Secret, UTF8(签名原文)))`。WebSocket 签名**包含**钱包地址，与 REST 请求签名规则不同。请勿发送 API Secret。

## 私有订阅示例

```json theme={null}
{
  "t": 1720000000123,
  "id": "broker-private-1",
  "op": "subscribe",
  "ch": "pred.orders",
  "payload": {"all": true},
  "auth": {
    "method": "broker_api_key",
    "key": "YOUR_BROKER_API_KEY",
    "sign": "HEX_SIGNATURE",
    "wallet_address": "<USER_WALLET>"
  }
}
```

`time` 在此示例中为 `1720000000`。钱包地址须与生成签名时使用的地址完全一致。订阅其他私有频道时，按实际 `channel` 名称重新生成签名。Broker REST 请求的 Key、Header 与签名规则见[Broker API 认证与签名](https://dexbuilder.mintlify.site/zh/event-markets/api/broker-authentication.md)。

## 连接预鉴权（可选）

也可以先通过 `server.sign` 认证连接，再订阅私有频道。此时签名原文中的频道为 `server.sign`、操作为 `auth`，不能复用订阅请求的签名。

```text theme={null}
channel=server.sign&event=auth&time=1720000000&wallet_address=<URL编码的钱包地址>
```

```json theme={null}
{
  "t": 1720000000123,
  "id": "broker-auth-1",
  "op": "auth",
  "ch": "server.sign",
  "payload": {
    "method": "broker_api_key",
    "key": "YOUR_BROKER_API_KEY",
    "sign": "HEX_SIGNATURE",
    "wallet_address": "<USER_WALLET>"
  }
}
```

认证成功后，连接绑定该钱包对应的用户。后续私有订阅和退订可以省略 `auth`；同一连接不能切换到其他用户，切换用户须建立新连接。断线重连后须重新认证。WebSocket 客户端在 `auth.wallet_address` 或预鉴权的 `payload.wallet_address` 中提供钱包地址，无需在 WebSocket 握手中额外设置 REST 的 `X-User-Wallet-Address` 请求头。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.