Hmm, so I just found an interesting behavior that might be the cause.
It appears that NodeBB uses the websocket by default, but when the connection fails, it falls back to polling!
It does not appear to reconnect to the websocket after the failure. There's an easy way to see this - open up Chrome's dev tools on a NodeBB site, then kill your network connection.
It starts sending polling requests, and continues even after the connection is re-established!
Perhaps this is the reason that it gets "stuck" and has weird connectivity bugs?