Node.js WebSocket consumer dropping events in high-volume Streaming Analytics stream

We’re seeing a steady stream of WebSocket closed: 1006 (abnormal closure) errors in our Node.js consumer that subscribes to the Genesys Cloud Streaming Analytics notification events. The goal is to push these real-time interaction stats into a Kafka topic for downstream processing, but the connection dies roughly every 45-90 seconds under load.

Here’s the basic consumer setup using the native ws library:

const WebSocket = require('ws');
const client = new WebSocket('wss://api.mypurecloud.com/api/v2/analytics/realtime/events');

client.on('open', () => {
 client.send(JSON.stringify({
 type: 'subscribe',
 channels: ['interaction']
 }));
});

client.on('message', (data) => {
 // Push to Kafka producer
 kafkaProducer.send({ topic: 'gc-analytics', messages: [data] });
});

I’ve verified the OAuth token is valid and refreshed. The issue seems tied to the ping/pong mechanism. Genesys sends a ping, but if the Kafka producer is back-pressuring or the event loop is blocked processing JSON, the pong response misses the window. Increasing the pingTimeout in the ws options helps slightly, but it’s not a permanent fix. Is there a recommended pattern for handling back-pressure on the client side while maintaining the WebSocket heartbeat? Or should we be batching these events before sending to Kafka?