in content/lib/paho-mqtt.js [1546:1618]
ClientImpl.prototype._disconnected = function (errorCode, errorText) {
this._trace("Client._disconnected", errorCode, errorText);
if (errorCode !== undefined && this._reconnecting) {
//Continue automatic reconnect process
this._reconnectTimeout = new Timeout(this, window, this._reconnectInterval, this._reconnect);
return;
}
this.sendPinger.cancel();
this.receivePinger.cancel();
if (this._connectTimeout) {
this._connectTimeout.cancel();
this._connectTimeout = null;
}
// Clear message buffers.
this._msg_queue = [];
this._buffered_msg_queue = [];
this._notify_msg_sent = {};
if (this.socket) {
// Cancel all socket callbacks so that they cannot be driven again by this socket.
this.socket.onopen = null;
this.socket.onmessage = null;
this.socket.onerror = null;
this.socket.onclose = null;
if (this.socket.readyState === 1)
this.socket.close();
delete this.socket;
}
if (this.connectOptions.uris && this.hostIndex < this.connectOptions.uris.length-1) {
// Try the next host.
this.hostIndex++;
this._doConnect(this.connectOptions.uris[this.hostIndex]);
} else {
if (errorCode === undefined) {
errorCode = ERROR.OK.code;
errorText = format(ERROR.OK);
}
// Run any application callbacks last as they may attempt to reconnect and hence create a new socket.
if (this.connected) {
this.connected = false;
// Execute the connectionLostCallback if there is one, and we were connected.
if (this.onConnectionLost) {
this.onConnectionLost({errorCode:errorCode, errorMessage:errorText, reconnect:this.connectOptions.reconnect, uri:this._wsuri});
}
if (errorCode !== ERROR.OK.code && this.connectOptions.reconnect) {
// Start automatic reconnect process for the very first time since last successful connect.
this._reconnectInterval = 1;
this._reconnect();
return;
}
} else {
// Otherwise we never had a connection, so indicate that the connect has failed.
if (this.connectOptions.mqttVersion === 4 && this.connectOptions.mqttVersionExplicit === false) {
this._trace("Failed to connect V4, dropping back to V3");
this.connectOptions.mqttVersion = 3;
if (this.connectOptions.uris) {
this.hostIndex = 0;
this._doConnect(this.connectOptions.uris[0]);
} else {
this._doConnect(this.uri);
}
} else if(this.connectOptions.onFailure) {
this.connectOptions.onFailure({invocationContext:this.connectOptions.invocationContext, errorCode:errorCode, errorMessage:errorText});
}
}
}
};