Is there a clean way to maintain a persistent WebSocket connection to the Genesys Cloud Notification API for conversation events without triggering a silent disconnect?
I am building an automated quality scoring service that listens to conversation:conversation events in real-time to trigger evaluation workflows. The connection initializes correctly using the genesys-cloud-purecloud-platform-client SDK, but the stream consistently dies after exactly 5 minutes if no conversation events are fired. There is no explicit error event or close code returned by the client library, just a silent cessation of data flow.
const ws = new NotificationWebSocket();
ws.addEventListener('message', (event) => {
const data = JSON.parse(event.data);
processEvent(data);
});
ws.connect();
- I have attempted to implement a custom
ping/ponghandler by sending a JSON-RPC ping to the endpoint, but the server does not respond, and the connection remains open but unresponsive. - I tried subscribing to a high-frequency event type (
conversation:participant:status) to keep the channel warm, but this introduces unnecessary load and still does not prevent the eventual drop during quiet periods.
The documentation suggests the server handles keep-alives, but my implementation suggests otherwise. Is there a specific header or subscription configuration required to prevent this timeout?