Skip to main content
Nhận thông báo real-time mỗi khi lệnh phái sinh của bạn thay đổi trạng thái — lệnh thường, lệnh điều kiện, và vị thế mở. Server đẩy cập nhật qua WebSocket ngay lập tức, bạn không cần polling. Mỗi loại lệnh có topic riêng để subscribe. Endpoint: /ws/nesoi. Heartbeat là ping|1 mỗi 2 giây (timeout 45s). Format dữ liệu: message_proto|TOPIC|{JSON}.

Demo tương tác

Địa chỉ WSS
Payload kết nối / xác thực
Kênh / Chủ đề
  • DE_ORDER — Sổ lệnh thường phái sinh.
  • DE_CONDITIONAL_ORDER — Sổ lệnh điều kiện phái sinh.
  • DE_OPEN_POSITION — Vị thế mở và lãi/lỗ.
Demo trên chỉ mang tính minh họa. Wire format thực tế là text frame dạng message_proto|TOPIC|{JSON}. Xem chi tiết bên dưới.

Kết nối

WSS /ws/nesoi Địa chỉ đầy đủ của WebSocket endpoint:
BẮT BUỘC: Bạn phải disable auto-ping (RFC 6455 ping frame) của WebSocket library. Server TCBS chỉ chấp nhận heartbeat dạng text frame ping|1.

Xác thực (Authentication)

Sau khi kết nối thành công, bạn gửi message xác thực theo format sau — client gửi đi authenticate message:
Trong đó BASE64_PAYLOAD là base64 encode của chuỗi JSON chứa token OpenAPI của bạn:
Ví dụ cụ thể: Server trả về — đầu tiên là timeout config:
Con số 45 nghĩa là nếu client không gửi heartbeat trong 45 giây, server sẽ ngắt kết nối. Server trả về — xác thực thành công:
Bạn PHẢI đợi nhận response auth thành công trước khi gửi subscribe. Không gửi subscribe ngay sau authenticate.

Đăng ký kênh (Subscribe)

Sau khi auth thành công, bạn đăng ký từng topic riêng lẻ. Có 3 topic khả dụng: Client gửi đi — subscribe cho từng topic:

Heartbeat — Giữ kết nối

Client PHẢI gửi heartbeat text frame mỗi 2 giây. Nếu server không nhận heartbeat trong 45 giây (giá trị pingTimeout) thì sẽ tự động ngắt kết nối. Client gửi đi — heartbeat frame:
Heartbeat phải là TEXT frame, KHÔNG phải binary/ping frame theo RFC 6455. Tần suất: 1 message mỗi 2 giây.

Cấu trúc Message

Server đẩy về cho bạn 2 loại message — control (điều khiển) và data (dữ liệu lệnh): Server trả về — data message có format như sau:
Ví dụ thực tế — server đẩy về khi lệnh của bạn thay đổi trạng thái:

Data Schema

DE_ORDER — Sổ lệnh thường

DE_ORDER — Lệnh phái sinh thường

Bảng tổ hợp trạng thái DE_ORDER


DE_CONDITIONAL_ORDER — Sổ lệnh điều kiện

DE_CONDITIONAL_ORDER — Lệnh điều kiện phái sinh

DE_OPEN_POSITION — Vị thế mở

DE_OPEN_POSITION — Vị thế mở phái sinh

Sequence Diagram

Luồng kết nối WebSocket thay đổi thông tin lệnh phái sinh

Xử lý lỗi & Reconnect

Chiến lược reconnect: Dùng exponential backoff với công thức delay = min(2^attempt, 30) giây. Tối đa thử 10 lần, sau đó bạn nên alert để xử lý thủ công.

Code hoàn chỉnh


FAQ

Nesoi dành riêng cho phái sinh, hỗ trợ 3 topic (DE_ORDER, DE_CONDITIONAL_ORDER, DE_OPEN_POSITION). Aither chỉ có 1 topic (STOCK_ORDER). Timeout của Nesoi là 45s (vs 7s của Aither).
status cho biết trạng thái luồng (P=Pending, PM=Matched, PC=Cancel, PW=Waiting cancel…), quote cho biết trạng thái chi tiết (G=Gateway/chờ, Y=Đã gửi sổ). Xem bảng tổ hợp ở trên.
Mỗi khi vị thế của bạn thay đổi (lệnh khớp, net-off) hoặc khi giá thị trường thay đổi đáng kể (cập nhật lãi/lỗ realtime).
Không bắt buộc. Bạn chỉ cần subscribe topic nào mình quan tâm. Ví dụ chỉ theo dõi lệnh thường thì subscribe DE_ORDER là đủ.