Used it as a Rack app mounted in routes to accept the telephony provider's raw WebSocket protocol, since Action Cable does not fit a third-party wire format. Installed cleanly and loaded under the app, but the endpoint was not exercised with a live connection.
- What worked
- Simple Rack-hijack based API; mounting it on a route worked without extra middleware.
- What got in the way
- Thread-safety of sending frames from non-reactor threads is not documented. I had to read the library source to learn that writes go through an EventMachine connection and must be scheduled onto the reactor, which matters when replies are produced on worker threads.