Skip to main content
Nhận thông báo real-time mỗi khi lệnh cổ phiếu cơ sở của bạn thay đổi trạng thái — đặt, khớp, huỷ, hoặc sửa. Server tự động push thông tin qua WebSocket ngay khi có cập nhật, không cần bạn polling. Mỗi message chứa đầy đủ thông tin lệnh ở trạng thái mới nhất. Endpoint này (/ws/aither) dùng riêng cho lệnh cổ phiếu cơ sở. Heartbeat là ping|1, format dữ liệu là message_proto|TOPIC|{JSON} — khác với bảng giá dùng pipe-delimited.

Demo tương tác

Địa chỉ WSS
Payload kết nối / xác thực
Kênh / Chủ đề
  • STOCK_ORDER — Cập nhật trạng thái lệnh cổ phiếu cơ sở.
Demo trên chỉ mang tính minh họa. Wire format thực tế là text frame dạng message_proto|STOCK_ORDER|{JSON}. Xem chi tiết bên dưới.

Kết nối

WSS /ws/aither Địa chỉ WebSocket đầy đủ mà bạn cần kết nối tới:
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. Nếu library tự gửi binary ping, server có thể ngắt kết nối.

Xác thực (Authentication)

Sau khi kết nối WebSocket thành công, bạn cần gửi một text frame xác thực theo format sau:
Phần BASE64_PAYLOAD là base64 encode của một chuỗi JSON chứa token OpenAPI của bạn:
Ví dụ cụ thể — giả sử token OpenAPI của bạn là: Sau khi nhận được message xác thực, server sẽ trả về hai message. Đầu tiên là timeout config cho biết khoảng thời gian heartbeat tối đa:
Con số 7 nghĩa là nếu client không gửi ping trong 7 giây, server sẽ ngắt kết nối. Tiếp theo, server trả về kết quả xác thực:
Bạn PHẢI đợi nhận response auth thành công trước khi gửi subscribe. Nếu gửi subscribe ngay lập tức, server có thể reject.

Đăng ký kênh (Subscribe)

Sau khi auth thành công, bạn gửi message subscribe để đăng ký nghe topic STOCK_ORDER. Message client gửi lên:
Phần base64 payload khi decode ra sẽ là:
Kể từ lúc này, mỗi khi lệnh của bạn có thay đổi trạng thái, server sẽ tự động push data về cho bạn qua kết nối này.

Heartbeat — Giữ kết nối

Để giữ kết nối sống, client PHẢI gửi heartbeat text frame mỗi 2 giây. Nếu server không nhận được heartbeat nào trong 7 giây (giá trị pingTimeout server đã gửi lúc auth) thì sẽ tự động ngắt kết nối. Message heartbeat mà client gửi lên:
Heartbeat phải là TEXT frame, KHÔNG phải binary/ping frame. Tần suất: 1 message mỗi 2 giây.

Cấu trúc Message

Server gửi về cho bạn 2 loại message chính: Với data message (cập nhật lệnh), format mà server trả về sẽ là:
Ví dụ thực tế — đây là một message server push về khi lệnh mua LUT được tiếp nhận:

Data Schema — STOCK_ORDER

STOCK_ORDER — Thông tin lệnh cơ sở

Bảng trạng thái lệnh (orStatus)


Sequence Diagram

Luồng kết nối WebSocket thay đổi thông tin lệnh cơ sở

Xử lý lỗi & Reconnect

Chiến lược reconnect: Bạn nên 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 đó nên alert để kiểm tra thủ công.

Code hoàn chỉnh


FAQ

Mỗi khi lệnh của bạn thay đổi trạng thái: đặt, gửi sàn, khớp, khớp một phần, huỷ, sửa, từ chối, hết hiệu lực.
Endpoint Aither dùng format authenticate|base64({'jwt':'token'}) — base64 encode toàn bộ JSON object chứa JWT. Bảng giá (Thesis/Ouranos) dùng d|a|||base64(token_raw).
Gửi ping|1 (text frame) mỗi 2 giây. Timeout mặc định là 7 giây (từ server config pingTimeout|7).
Không. Subscribe chỉ cần topic name. Server tự xác định account từ JWT token đã xác thực.