I made up this very trivial trick to determine whether a HTML5 WebSocket disconnected because the connection was lost or because no connection could be made.

I don't think it's such a complicated thing but if you need it, it might be helpful.

Anyway:

Code:
var ws = new WebSocket("...");
var connected = false;
ws.onopen = function() {
    connected = true;
}
ws.onclose = function() {
    if(!connected) {
        // it disconnected without being opened, i.e. timeout
    } else {
        // it disconnected whilst it had been opened before, i.e. connection lost
    }
    connected = false;
}