Home

/

Introduction

Code Examples

Python and JavaScript WebSocket client examples.

Connect to your Data Stream endpoint via WebSocket. Replace the URL with your endpoint URL from the dashboard.

Python — Single Channel

Python WebSocket Client

import asyncio
import websockets
import json

async def stream_orders():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to order statuses
        await ws.send(json.dumps({
            "method": "subscribe",
            "subscription": {"type": "order_statuses"}
        }))

        # Wait for acknowledgement
        ack = await ws.recv()
        print(f"Subscribed: {ack}")

        # Process incoming data
        async for message in ws:
            data = json.loads(message)
            print(data)

asyncio.run(stream_orders())
import asyncio
import websockets
import json

async def stream_orders():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to order statuses
        await ws.send(json.dumps({
            "method": "subscribe",
            "subscription": {"type": "order_statuses"}
        }))

        # Wait for acknowledgement
        ack = await ws.recv()
        print(f"Subscribed: {ack}")

        # Process incoming data
        async for message in ws:
            data = json.loads(message)
            print(data)

asyncio.run(stream_orders())
import asyncio
import websockets
import json

async def stream_orders():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to order statuses
        await ws.send(json.dumps({
            "method": "subscribe",
            "subscription": {"type": "order_statuses"}
        }))

        # Wait for acknowledgement
        ack = await ws.recv()
        print(f"Subscribed: {ack}")

        # Process incoming data
        async for message in ws:
            data = json.loads(message)
            print(data)

asyncio.run(stream_orders())

JavaScript — With Reconnection

JavaScript with Auto-Reconnect

function connect() {
  const ws = new WebSocket("wss://your-stream.hyperpc.app");
  let pingInterval;

  ws.onopen = () => {
    console.log("Connected");

    // Subscribe to channels
    ws.send(JSON.stringify({
      method: "subscribe",
      subscription: { type: "raw_book_diffs" }
    }));

    // Keep-alive
    pingInterval = setInterval(() => {
      ws.send(JSON.stringify({ method: "ping" }));
    }, 30000);
  };

  ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    if (data.channel === "pong") return; // Ignore pong
    console.log(data);
  };

  ws.onclose = () => {
    clearInterval(pingInterval);
    console.log("Disconnected, reconnecting in 3s...");
    setTimeout(connect, 3000);
  };

  ws.onerror = (err) => {
    console.error("Error:", err);
    ws.close();
  };
}

connect();
function connect() {
  const ws = new WebSocket("wss://your-stream.hyperpc.app");
  let pingInterval;

  ws.onopen = () => {
    console.log("Connected");

    // Subscribe to channels
    ws.send(JSON.stringify({
      method: "subscribe",
      subscription: { type: "raw_book_diffs" }
    }));

    // Keep-alive
    pingInterval = setInterval(() => {
      ws.send(JSON.stringify({ method: "ping" }));
    }, 30000);
  };

  ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    if (data.channel === "pong") return; // Ignore pong
    console.log(data);
  };

  ws.onclose = () => {
    clearInterval(pingInterval);
    console.log("Disconnected, reconnecting in 3s...");
    setTimeout(connect, 3000);
  };

  ws.onerror = (err) => {
    console.error("Error:", err);
    ws.close();
  };
}

connect();
function connect() {
  const ws = new WebSocket("wss://your-stream.hyperpc.app");
  let pingInterval;

  ws.onopen = () => {
    console.log("Connected");

    // Subscribe to channels
    ws.send(JSON.stringify({
      method: "subscribe",
      subscription: { type: "raw_book_diffs" }
    }));

    // Keep-alive
    pingInterval = setInterval(() => {
      ws.send(JSON.stringify({ method: "ping" }));
    }, 30000);
  };

  ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    if (data.channel === "pong") return; // Ignore pong
    console.log(data);
  };

  ws.onclose = () => {
    clearInterval(pingInterval);
    console.log("Disconnected, reconnecting in 3s...");
    setTimeout(connect, 3000);
  };

  ws.onerror = (err) => {
    console.error("Error:", err);
    ws.close();
  };
}

connect();

Python — Multiple Channels with Keep-Alive

Multi-Channel with Keepalive

import asyncio
import websockets
import json

async def multi_stream():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to multiple channels
        channels = ["order_statuses", "raw_book_diffs", "twap_statuses"]
        for ch in channels:
            await ws.send(json.dumps({
                "method": "subscribe",
                "subscription": {"type": ch}
            }))
            ack = await ws.recv()
            print(f"Subscribed to {ch}: {ack}")

        # Background keepalive
        async def keepalive():
            while True:
                await ws.send(json.dumps({"method": "ping"}))
                await asyncio.sleep(30)

        asyncio.create_task(keepalive())

        # Process all messages
        async for message in ws:
            data = json.loads(message)
            if data.get("channel") == "pong":
                continue
            print(data)

asyncio.run(multi_stream())
import asyncio
import websockets
import json

async def multi_stream():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to multiple channels
        channels = ["order_statuses", "raw_book_diffs", "twap_statuses"]
        for ch in channels:
            await ws.send(json.dumps({
                "method": "subscribe",
                "subscription": {"type": ch}
            }))
            ack = await ws.recv()
            print(f"Subscribed to {ch}: {ack}")

        # Background keepalive
        async def keepalive():
            while True:
                await ws.send(json.dumps({"method": "ping"}))
                await asyncio.sleep(30)

        asyncio.create_task(keepalive())

        # Process all messages
        async for message in ws:
            data = json.loads(message)
            if data.get("channel") == "pong":
                continue
            print(data)

asyncio.run(multi_stream())
import asyncio
import websockets
import json

async def multi_stream():
    uri = "wss://your-stream.hyperpc.app"
    async with websockets.connect(uri) as ws:
        # Subscribe to multiple channels
        channels = ["order_statuses", "raw_book_diffs", "twap_statuses"]
        for ch in channels:
            await ws.send(json.dumps({
                "method": "subscribe",
                "subscription": {"type": ch}
            }))
            ack = await ws.recv()
            print(f"Subscribed to {ch}: {ack}")

        # Background keepalive
        async def keepalive():
            while True:
                await ws.send(json.dumps({"method": "ping"}))
                await asyncio.sleep(30)

        asyncio.create_task(keepalive())

        # Process all messages
        async for message in ws:
            data = json.loads(message)
            if data.get("channel") == "pong":
                continue
            print(data)

asyncio.run(multi_stream())

Warning

Always implement reconnection logic in production. Network interruptions, server maintenance, or idle timeouts can close your connection at any time.

On this page

Real-Time Streams

/

Code Examples

Real-Time Streams

/

Code Examples