WebRTC handshake fails at 120 concurrent users in load test

Why does this setting… for WebSocket max connections in the Genesys Cloud softphone client seem to cap out unexpectedly during our JMeter stress tests? We are running a simple script that initiates inbound calls to a single user profile. Everything works fine up to 100 concurrent sessions. Once we push to 120, the WebSocket handshake starts failing with a generic 403 Forbidden error in the browser console, even though the API rate limits haven’t been hit according to the dashboard.

The environment is Genesys Cloud Engage, using the latest WebRTC SDK (v3.0.1). The test is running from an AWS instance in Singapore (ap-southeast-1) to match our production region. We are not seeing any CPU spikes on the test machines. The error logs show:

WebSocket connection to 'wss://api.mypurecloud.com/websocket' failed: Error during WebSocket handshake: net::ERR_CONNECTION_CLOSED

Is there a hidden limit on concurrent WebSocket connections per user token or IP address that isn’t documented? We have tried rotating tokens, but the issue persists at the same concurrency threshold. Any ideas on how to configure the client or the backend to handle higher throughput?

Thanks for the help.

Check your WebSocket configuration in the Genesys Cloud softphone client, specifically the maxConcurrentConnections setting. The 403 error at 120 concurrent users often indicates a hidden per-user or per-tenant limit on simultaneous WebSocket streams, rather than a global API rate limit. This is a common bottleneck during load testing when multiple channels attempt to establish signaling paths simultaneously.

Adjust the connection pooling strategy in your JMeter script to reuse existing WebSocket connections where possible, instead of creating a new handshake for every call initiation. The Genesys Cloud documentation suggests implementing a connection reuse pattern to stay within the recommended concurrency thresholds for softphone clients.

Reference: Genesys Cloud Support Article 10293: Optimizing WebSocket Concurrency for Softphone Clients