WebSocket Events
Listen to real-time events from Zapdos using WebSocket connections. Only available in backend environments.
Basic WebSocket Connection
Section titled “Basic WebSocket Connection”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); },});
Handling Different Event Types
Section titled “Handling Different Event Types”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); } },});
Managing WebSocket Connection
Section titled “Managing WebSocket Connection”Control the WebSocket connection lifecycle:
const ws = client.listen({ onOpen: () => console.log("Connected"), onMessage: (data) => console.log("Event:", data),});
// Close connection when donesetTimeout(() => { ws.close(); console.log("WebSocket closed");}, 60000);
// Handle reconnectionconst ws = client.listen({ onClose: (event) => { console.log("Connection lost, reconnecting..."); // Implement reconnection logic here },});
Error Handling
Section titled “Error Handling”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();
Use Cases
Section titled “Use Cases”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.