> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Kênh Người dùng Riêng tư

> Đăng ký các sự kiện 6MM WebSocket đã xác thực cho các lệnh, vị thế, số dư và thay đổi tài khoản bằng cách tạo và duy trì khóa nghe.

Tạo `listenKey` trước:

```http
POST /v1/private/user/listen-key
```

Ví dụ phản hồi:

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "listenKey": "f57cb61ef604ce76be09e753a5dbdd8c",
    "expireAt": 1777539918867
  },
  "requestId": "req-listen-key"
}
```

`listenKey` mặc định có hiệu lực trong 60 phút. Khuyến nghị gia hạn mỗi 30 phút.

<h2 id="renew">
  Gia hạn
</h2>

```http
PUT /v1/private/user/listen-key
Content-Type: application/json
```

```json
{ "listenKey": "f57cb61ef604ce76be09e753a5dbdd8c" }
```

<h2 id="close">
  Đóng
</h2>

```http
DELETE /v1/private/user/listen-key
Content-Type: application/json
```

```json
{ "listenKey": "f57cb61ef604ce76be09e753a5dbdd8c" }
```

<h2 id="connect-to-private-websocket">
  Kết nối với WebSocket riêng tư
</h2>

```
wss://ws.6mm.com/ws?listenKey=YOUR_LISTEN_KEY
```

Phương thức kết nối JWT tương thích:

```
wss://ws.6mm.com/ws?token=YOUR_ACCESS_TOKEN
```

Sau khi xác thực thành công, máy chủ sẽ tự động đăng ký kết nối đến kênh riêng tư của người dùng hiện tại. Không cần đăng ký thủ công.

Xác nhận xác thực thành công:

```json
{ "event": "auth", "success": true, "data": "1188041528" }
```

<h2 id="common-private-events">
  Các sự kiện riêng tư phổ biến
</h2>

| Sự kiện              | Mô tả                                                                            |
| -------------------- | -------------------------------------------------------------------------------- |
| `ORDER_TRADE_UPDATE` | Thay đổi trạng thái đơn hàng, bao gồm đơn hàng mới, sửa đổi, giao dịch và hủy bỏ |
| `ACCOUNT_UPDATE`     | Số dư tài khoản và thay đổi vị thế                                               |

Bao bọc tin nhắn đẩy riêng tư:

```json
{
  "topic": "user.5794",
  "ts": 1771047000000,
  "data": {
    "eventType": "ORDER_TRADE_UPDATE"
  }
}
```

REST đầu cuối truy vấn và luồng riêng tư WebSocket sử dụng các lược đồ riêng biệt. Khách hàng nên phân tích từng lược đồ độc lập và không nên giả định tên trường giống hệt nhau.

<h2 id="common-differences">
  Những điểm khác biệt chung
</h2>

| Miền                | cánh đồng REST | cánh đồng WebSocket                                    |
| ------------------- | -------------- | ------------------------------------------------------ |
| Tình trạng đơn hàng | `status`       | `orderStatus`                                          |
| Số dư đóng băng     | `frozenMargin` | `frozenBalance`                                        |
| Chế độ lề           | `marginMode`   | `marginMode`, trả về dưới dạng chuỗi ở vị trí và luồng |

<h2 id="recovery-and-reconciliation">
  Phục hồi và hòa giải
</h2>

* Gia hạn listenKey trước khi hết hạn và tạo  mới nếu gia hạn thất bại.
* Kết nối lại, xác thực lại và coi socket mới như một phiên sự kiện mới.
* Loại bỏ trùng lặp sự kiện trước khi thay đổi số dư đối tác hoặc bản ghi đơn hàng.
* Nếu có thể đã bỏ sót sự kiện, hãy truy vấn [orders](/vi/developer-api/rest-api/order), [positions](/vi/developer-api/rest-api/position), và [trạng thái tài khoản](/vi/developer-api/rest-api/user-and-account) qua REST.
* Làm theo [hướng dẫn kết nối và nhịp tim](/vi/developer-api/websocket/connection-subscription-and-heartbeat) để thử lại và xử lý kết nối bị trì hoãn.