I have been trying for some time to nail down the root cause of why some JsSIP endpoints sometimes become unreachable. This is despite low (30s) re-registration intervals, use of frequent (~5-10s) WebSocket keepalive mechanisms from the server side, etc. Various network/NAT type causes have also been ruled out; incoming packets always make it to the host, but the browser endpoint does not always respond. The browser endpoint does not consistently remain in this regime; it passes in and out of a state of reachability.
In theory, this means that if the user of the JsSIP endpoint remains consistently active on their PC, then JsSIP should remain reachable. This is not what happens. I suspect there is much I do not understand about the core JsSIP event loop and the things that can interrupt or block it.
Other, related questions that surface mostly revolve around how execution behaves when the PC enters suspend/hibernate mode. When browser execution is resumed, does JsSIP execution resume? Does JsSIP immediately notice that the previous WebSocket connection has gone stale, promptly establish a new one and re-register?
Any insight is appreciated!
Alex Balashov | Principal | Evariste Systems LLC