/
ikratkiy
/
Hyperliquid
Обзор
Документация
Войти
/
ikratkiy
/
Hyperliquid
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/shared/hyperliquid/websocket.ts
51 строка
1 KB
ikratkiy
feat: add hyperliquid api infrastructure
09 июн 2026, 08:18
09 июн 2026, 08:18
0a10874
Код
Авторство
О чём код?
import type { EnvironmentMode } from "./config"; import { getEnvironmentConfig } from "./config"; export type WsStatus = "idle" | "connecting" | "open" | "closed" | "error"; export type HyperliquidSubscription = | { type: "l2Book"; coin: string } | { type: "trades"; coin: string }; export type HyperliquidWsClient = { close: () => void; }; export function openHyperliquidWebSocket(input: { mode: EnvironmentMode; subscriptions: HyperliquidSubscription[]; onStatus: (status: WsStatus) => void; onMessage: (message: unknown) => void; onError: (message: string) => void; }): HyperliquidWsClient { input.onStatus("connecting"); const socket = new WebSocket(getEnvironmentConfig(input.mode).wsUrl); socket.addEventListener("open", () => { input.onStatus("open"); for (const subscription of input.subscriptions) { socket.send(JSON.stringify({ method: "subscribe", subscription })); } }); socket.addEventListener("message", (event) => { try { input.onMessage(JSON.parse(event.data)); } catch { input.onMessage(event.data); } }); socket.addEventListener("close", () => input.onStatus("closed")); socket.addEventListener("error", () => { input.onStatus("error"); input.onError("WebSocket Hyperliquid вернул ошибку соединения."); }); return { close() { socket.close(); }, }; }