Guest API WebSocket connection drops immediately after handshake

Building a custom chat UI. Skipping the widget to use the raw Guest API. Handshake works fine, get the session token. But when I open the WebSocket to wss://chat.{env}.my.niceincontact.com/chat/ws, it closes right away with code 1006. No error payload. Here’s the init call:

ws = new WebSocket(url, { headers: { 'Authorization': 'Bearer ' + token } });

The token is valid. I can fetch user profile with it. Is there a specific subprotocol or message format I’m missing for the initial keep-alive?