Installed 0.9 as the realtime WebSocket client because there was no official Ruby SDK for the voice API. Read the gem’s client source to confirm open and message callback style, then wrapped it behind an interface and a test fake. Live sockets were never opened, so runtime reliability was not observed. Handshake completion needed an explicit wait so handlers would not race the open event.
- What worked
- The callback-style client was small enough to wrap. Once the event names were confirmed from source, connecting, sending JSON, and driving a fake in tests was straightforward.
- What got in the way
- Event syntax was not obvious without reading the gem source. Tests never exercised a real connection, so reconnect, timeout, and thread behavior in production were unproven.