> ## 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_api_key` 認證方式，並在 `auth.wallet_address` 傳入目標使用者的錢包地址。該錢包須屬於目前 Broker。

## 私有訂閱簽名

請求中的 `t` 是 Unix 毫秒時間戳。簽名原文的 `time` 使用 `floor(t / 1000)`。錢包地址按 URL Query 規則編碼，欄位順序固定：

```text theme={null}
channel=ec.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": "ec.orders",
  "payload": {"all": true},
  "auth": {
    "method": "broker_api_key",
    "key": "YOUR_BROKER_API_KEY",
    "sign": "HEX_SIGNATURE",
    "wallet_address": "<USER_WALLET>"
  }
}
```

此示例的簽名時間 `time` 為 `1720000000`。訂閱其他私有頻道時，請使用實際頻道名稱重新簽名。簽名使用的錢包地址須與 `auth.wallet_address` 完全一致。

## 連線預先認證（可選）

也可以先使用 `server.sign` 認證連線。此時請另行簽名，不能重用訂閱簽名：

```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 訊息中提供錢包地址；握手時無需傳遞 REST 的 `X-User-Wallet-Address` Header。REST 簽名規則見 [Broker API Key 與簽名](https://dexbuilder.mintlify.site/zh-TW/api-reference/common/broker-authentication.md)。


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