connectWithCredential method
Connects to the WebSocket using the provided CredentialConfig
Implementation
void connectWithCredential(CredentialConfig credentialConfig) {
// Store current config for potential fallback
_currentConfig = credentialConfig;
// First check if there is a custom logger set within the config - if so, we set it here
// Use custom logger if provided or fallback to default.
_logger = credentialConfig.customLogger ?? DefaultLogger();
GlobalLogger.logger = _logger;
GlobalLogger().i(
'TelnyxClient.connectWithCredential: Attempting to connect.',
);
// Now that a logger is set, we can set the log level
_logger
..setLogLevel(credentialConfig.logLevel)
..log(LogLevel.info, 'connect()');
try {
// Build the host address with region support
final hostAddress = _buildHostAddress(
credentialConfig,
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.connectWithCredential (via _onOpen): Web Socket is now connected',
);
_onOpen();
credentialLogin(credentialConfig);
}
..onMessage = (dynamic data) {
_onMessage(data);
}
..onClose = (int closeCode, String closeReason) {
GlobalLogger().i('Closed [$closeCode, $closeReason]!');
_connected = false;
bool wasClean = WebSocketUtils.isCleanClose(closeCode, closeReason);
_onClose(wasClean, closeCode, closeReason);
}
..connect();
} catch (e) {
GlobalLogger().e(e.toString());
_connected = false;
GlobalLogger().e('WebSocket $_storedHostAddress error: $e');
}
}