Go to App

Real-Time Updates

Get instant notifications about export job progress, completions, and failures via a persistent WebSocket connection. This is the fastest way to track export status — no polling required.

premium business

How It Works

ExportComments uses Centrifugo as its real-time messaging server. Clients connect via WebSocket using the centrifuge-js SDK and subscribe to channels that deliver events as they happen.

bash
1. Authenticate → POST /api/public/auth/socket → JWT token
2. Connect → WebSocket to wss://exportcomments.com/connection/websocket
3. Subscribe → Auto-subscribed to your user channels
4. Receive → Events pushed in real-time as exports progress

Real-Time vs Webhooks vs Polling

MethodLatencyUse Case
WebSocketInstant (~50ms)Dashboards, live progress bars, interactive UIs
WebhooksNear-instantServer-to-server integrations, background processing
Polling5-10 secondsSimple scripts, environments without WebSocket support
💡
WebSocket and webhooks are complementary

Use WebSocket for client-facing real-time updates (progress bars, notifications) and webhooks for server-side event processing (triggering pipelines, storing results). They can be used together.

Available Channels

When you authenticate, you are automatically subscribed to these personal channels:

ChannelDescription
exports:{uuid}Export job events (created, progress, finished, failed)
webhooks:{uuid}Webhook delivery events
user:{uuid}Account-level notifications (subscription changes)
user_notifications_channel:{uuid}Toast-style notifications
user_dashboard_channel:{uuid}Dashboard data updates (activity, usage stats)

Where {uuid} is your user UUID.

Event Types

EventChannelDescription
job.createdexports:{uuid}New export job started
job.progressexports:{uuid}Export progress update (throttled to every 5s)
job.finishedexports:{uuid}Export completed successfully
job.failedexports:{uuid}Export failed
job.requeuedexports:{uuid}Export requeued for retry
job.convert.doneexports:{uuid}File conversion completed
job.convert.failedexports:{uuid}File conversion failed
webhook.event.createdwebhooks:{uuid}Webhook delivery attempted
subscription.updateduser:{uuid}Subscription plan changed
bulk_download.readyexports:{uuid}Bulk download ZIP is ready
bulk_download.failedexports:{uuid}Bulk download failed

Quick Start

javascript
import { Centrifuge } from 'centrifuge';
// 1. Create client with token authentication
const client = new Centrifuge('wss://exportcomments.com/connection/websocket', {
getToken: async () => {
const res = await fetch('https://exportcomments.com/api/public/auth/socket', {
method: 'POST',
headers: { 'X-AUTH-TOKEN': 'your-api-key' },
});
const data = await res.json();
return data.token;
},
});
// 2. Listen for events on your exports channel
client.on('publication', (ctx) => {
console.log('Event:', ctx.data.event, ctx.data);
});
// 3. Connect
client.connect();

See the Connection Guide for complete examples in multiple languages.