Node to Go for 1:1 calls: most of the 12x was a database query
The earlier posts (scale and liveness) measured 1:1 call signaling on Node. Each call runs a state machine (FSM): IDLE → OFFERING → CONNECTED → RENEGOTIATING, plus AWAITING_REJOIN and ENDED. I wrote a minimal Go version of that state machine (gosignal) to benchmark it next to Node, and completed the port afterwards. The prototype benchmark looked lopsided. At 400 simultaneous calls the load driver measured a median offer-to-answer time of 446ms on Node and 37ms on gosignal, about 12x lower. Then I replayed Node’s lifecycle tests on the port, and three gaps fell out that the benchmark had no way to see: a rejoin that reversed the caller and callee roles, a second offer that overwrote a live call, and renegotiation accepted from any state. ...