Skip to content

WebSocket Events

Listen to real-time events from Zapdos using WebSocket connections. Only available in backend environments.

Connect and listen to events:

import { createClient } from "zapdos-js";
const client = createClient({
apiKey: process.env.ZAPDOS_API_KEY,
});
const ws = client.listen({
onOpen: (event) => {
console.log("Connected to Zapdos WebSocket");
},
onMessage: (data) => {
console.log("Received event:", data);
},
onError: (error) => {
console.error("WebSocket error:", error);
},
onClose: (event) => {
console.log("Disconnected:", event.code, event.reason);
},
});

Process different types of events:

const ws = client.listen({
onMessage: (data) => {
switch (data.type) {
case "upload_completed":
console.log(`Upload done: ${data.object_id}`);
break;
case "indexing_started":
console.log(`Indexing started: ${data.object_id}`);
break;
case "indexing_completed":
console.log(`Ready for search: ${data.object_id}`);
break;
case "job_failed":
console.error(`Job failed: ${data.job_id}`);
break;
default:
console.log("Unknown event:", data);
}
},
});

Control the WebSocket connection lifecycle:

const ws = client.listen({
onOpen: () => console.log("Connected"),
onMessage: (data) => console.log("Event:", data),
});
// Close connection when done
setTimeout(() => {
ws.close();
console.log("WebSocket closed");
}, 60000);
// Handle reconnection
const ws = client.listen({
onClose: (event) => {
console.log("Connection lost, reconnecting...");
// Implement reconnection logic here
},
});

Handle WebSocket errors and reconnection:

let reconnectAttempts = 0;
const maxReconnectAttempts = 5;
function connectWebSocket() {
const ws = client.listen({
onOpen: () => {
console.log("WebSocket connected");
reconnectAttempts = 0; // Reset counter on successful connection
},
onError: (error) => {
console.error("WebSocket error:", error);
},
onClose: (event) => {
console.log(`WebSocket closed: ${event.code} ${event.reason}`);
// Attempt reconnection
if (reconnectAttempts < maxReconnectAttempts) {
reconnectAttempts++;
console.log(`Reconnecting... (attempt ${reconnectAttempts})`);
setTimeout(connectWebSocket, 1000 * reconnectAttempts);
} else {
console.error("Max reconnection attempts reached");
}
},
});
return ws;
}
const ws = connectWebSocket();

WebSocket events are useful for:

  • Real-time dashboards - Show upload progress across your application
  • Background job monitoring - Track indexing and processing status
  • User notifications - Alert users when their videos are ready
  • Analytics - Collect real-time usage statistics
  • Debugging - Monitor system events during development

The WebSocket connection automatically handles authentication using your API key.