Cấu trúc dữ liệu realtime WebSocket
realtime.create() — tạo RealtimeClient (EventEmitter). Phát event "quote" với RealtimeQuote.realtime.parseData() — parse 1 message thô thành RealtimeQuote (dùng khi tự quản lý WebSocket).Output là RealtimeQuote:
| Trường | Kiểu | Mô tả |
|---|---|---|
exchange | string | Sàn (MAIN) |
symbol | string | Mã cổ phiếu |
bidPrices | array | 3 mức giá mua [{price, volume}] |
askPrices | array | 3 mức giá bán [{price, volume}] |
matched.price | number | Giá khớp (nghìn VND) |
matched.volume | number | KL khớp |
matched.change | number | Thay đổi giá |
matched.changePercent | number | Phần trăm thay đổi (decimal) |
totalBuyVolume | number | Tổng KL mua nước ngoài |
totalBuyValue | number | Tổng giá trị mua NN |
totalVolume | number | Tổng khối lượng |
totalValue | number | Tổng giá trị |
side | string | Bên khớp: "buy" hoặc "sell" |
lastUpdated | number | Timestamp cập nhật |
import { realtime } from 'vnstock-js';
const client = realtime.create({ symbols: ['ACB', 'FPT'] });
client.on('quote', (quote) => {
console.log(quote.symbol, quote.matched.price);
// ACB 23.55
});
client.on('error', (err) => console.error(err));
client.connect();
// Thêm/bớt mã không cần reconnect
client.subscribe(['VNM']);
client.unsubscribe(['ACB']);
// Khi không cần nữa
client.disconnect();
| Trường | Mặc định | Mô tả |
|---|---|---|
symbols | [] | Danh sách mã subscribe khi connect |
url | SSI WS URL | Custom WebSocket endpoint |
autoReconnect | true | Tự động reconnect khi mất kết nối |
reconnectInterval | 3000 | ms giữa các lần retry (exponential backoff) |
maxReconnectAttempts | 10 | Số lần retry tối đa |
deadManTimeout | 60000 | ms không nhận message → reconnect (v1.3.0+, thay cho heartbeat) |
Note:
Dữ liệu realtime chỉ có trong giờ giao dịch: 9:00-11:30 và 13:00-15:00 các ngày trong tuần.