connectWithToken method
Connects to the WebSocket using the provided tokenConfig
Implementation
void connectWithToken(TokenConfig tokenConfig) {
// Store current config for potential fallback
_currentConfig = tokenConfig;
// First check if there is a custom logger set within the config - if so, we set it here
_logger = tokenConfig.customLogger ?? DefaultLogger();
GlobalLogger.logger = _logger;
GlobalLogger().i('TelnyxClient.connectWithToken: Attempting to connect.');
// Now that a logger is set, we can set the log level
_logger
..setLogLevel(tokenConfig.logLevel)
..log(LogLevel.info, 'connect()')
..log(LogLevel.info, 'connecting to WebSocket $_storedHostAddress');
try {
// Build the host address with region support
final hostAddress = _buildHostAddress(
tokenConfig,
voiceSdkId: _pushMetaData?.voiceSdkId,
);
txSocket.hostAddress = hostAddress;
GlobalLogger().i('connecting to WebSocket $hostAddress');
txSocket
..onOpen = () {
_closed = false;
_connected = true;
_isRegionFallbackAttempt =
false; // Reset fallback flag on successful connection
GlobalLogger().i(
'TelnyxClient.connectWithToken (via _onOpen): Web Socket is now connected',
);
_onOpen();
tokenLogin(tokenConfig);
}
..onMessage = (dynamic data) {
_onMessage(data);
}
..onClose = (int closeCode, String closeReason) {
GlobalLogger().i('Closed [$closeCode, $closeReason]!');
_connected = false;
final wasClean = WebSocketUtils.isCleanClose(closeCode, closeReason);
_onClose(wasClean, closeCode, closeReason);
}
..connect();
} catch (e) {
GlobalLogger().e(e.toString());
_connected = false;
GlobalLogger().e('WebSocket $_storedHostAddress error: $e');
}
}