in src/internal/Router.ts [116:156]
async _connect() {
const errors = [];
const endpoints = this._inactiveEndpoints;
const config = this._config;
const communicator = this._communicator;
const onSocketDisconnect = this._onSocketDisconnect.bind(this);
const onAffinityTopologyChange = this._onAffinityTopologyChange.bind(this);
const endpointsNum = endpoints.length;
const random = this._getRandomInt(endpointsNum);
this._changeState(IgniteClient.STATE.CONNECTING);
for (let i = 0; i < endpoints.length; i++) {
const index = (i + random) % endpointsNum;
const endpoint = endpoints[index];
try {
const socket = new ClientSocket(
endpoint, config, communicator,
onSocketDisconnect,
onAffinityTopologyChange);
await socket.connect();
Logger.logDebug(Util.format('Connected to %s', endpoint));
this._changeState(IgniteClient.STATE.CONNECTED);
this._addConnection(socket);
this._runBackgroundConnect();
return;
}
catch (err) {
Logger.logDebug(Util.format('Could not connect to %s. Error: "%s"', endpoint, err.message));
errors.push(Util.format('[%s] %s', endpoint, err.message));
}
}
const error = errors.join('; ');
this._changeState(IgniteClient.STATE.DISCONNECTED, error);
throw new IgniteClientError(error);
}