Event-Driven Integration

Build reactive applications using Quub Exchange webhooks and event streams.

Webhook Setup

Register Webhooks

// Register webhook endpoints
await client.events.createWebhook({
  url: "https://example.com/webhooks/quub",
  events: [
    "order.created",
    "order.filled",
    "order.cancelled",
    "trade.executed",
    "balance.updated",
  ],
  secret: "your-webhook-secret",
});

Webhook Handler

// webhooks/handler.js
import crypto from "crypto";
import express from "express";

const app = express();

app.post("/webhooks/quub", express.json(), (req, res) => {
  // Verify signature
  const signature = req.headers["x-quub-signature"];
  const payload = JSON.stringify(req.body);

  const expectedSignature = crypto
    .createHmac("sha256", process.env.WEBHOOK_SECRET)
    .update(payload)
    .digest("hex");

  if (signature !== expectedSignature) {
    return res.status(401).send("Invalid signature");
  }

  // Handle event
  const event = req.body;

  switch (event.type) {
    case "order.filled":
      handleOrderFilled(event.data);
      break;
    case "trade.executed":
      handleTradeExecuted(event.data);
      break;
    case "balance.updated":
      handleBalanceUpdated(event.data);
      break;
  }

  res.status(200).send("OK");
});

Event Streaming

Subscribe to Event Streams

// Event stream consumer
const ws = await client.events.connectEventStream();

ws.subscribe("orders.*", (event) => {
  console.log("Order event:", event);
});

ws.subscribe("trades.*", (event) => {
  console.log("Trade event:", event);
});

Next Steps: