/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ỉ WSSDE_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:
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:BASE64_PAYLOAD là base64 encode của chuỗi JSON chứa token OpenAPI của bạn:
Server trả về — đầu tiên là timeout config:
Đă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:
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:
Data Schema
DE_ORDER — Sổ lệnh thường
DE_ORDER — Lệnh phái sinh thườngBả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 sinhDE_OPEN_POSITION — Vị thế mở
DE_OPEN_POSITION — Vị thế mở phái sinhSequence Diagram
Luồng kết nối WebSocket thay đổi thông tin lệnh phái sinhXử 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
Endpoint Nesoi khác gì so với Aither (cổ phiếu)?
Endpoint Nesoi khác gì so với Aither (cổ phiếu)?
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).Trường status và quote kết hợp như thế nào?
Trường status và quote kết hợp như thế nào?
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.DE_OPEN_POSITION push khi nào?
DE_OPEN_POSITION push khi nào?
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).
Có cần subscribe tất cả 3 topic không?
Có cần subscribe tất cả 3 topic không?
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à đủ.