import { createClient } from 'graphql-ws';
const client = createClient({
url: 'wss://api.metabind.ai/graphql',
connectionParams: {
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
});
const unsubscribe = client.subscribe({
query: `
subscription WatchContent($id: ID!) {
contentUpdated(id: $id) {
contentId
action
timestamp
content {
id
name
compiled
}
resolvedRef {
package
dependencies
}
}
}
`,
variables: { id: 'cont123' }
}, {
next: (data) => {
const update = data.data.contentUpdated;
console.log('Content updated:', update.action, update.timestamp);
if (update.action === 'delete') {
removeContent(update.contentId);
return;
}
// Handle large payloads - content may be null
if (!update.content) {
fetchContent(update.contentId).then(content => {
refreshContent(content, update.resolvedRef);
});
} else {
refreshContent(update.content, update.resolvedRef);
}
// Fetch any missing package data
fetchMissingPackages([
update.resolvedRef.package,
...update.resolvedRef.dependencies
]);
},
error: (err) => console.error('Subscription error:', err),
complete: () => console.log('Subscription complete')
});
// Later, to unsubscribe
unsubscribe();