It uses dnode which uses socket.io which uses WebSockets whenever possible and falls back on flash or xhr polling. Joint is pretty new and I provide no guarantees but I've found those libraries to be pretty dependable when it comes to telling me when someone disconnects and keeping the connection open (socket.io checks for a heartbeat).