connect method
void
connect()
Implementation
void connect() {
if (_baseURL == null) {
return;
}
String urlString = _baseURL!;
if (urlString.startsWith("https://")) {
urlString = urlString.replaceFirst("https://", "wss://");
} else if (!urlString.startsWith("wss://")) {
urlString = "wss://$urlString";
}
if (urlString.contains(":0/")) {
urlString = urlString.replaceAll(":0/", "/");
}
if (!urlString.contains("/cable")) {
urlString += "/cable";
}
final queryParams = <String, String>{};
if (_sessionToken != null) {
queryParams['session_token'] = _sessionToken!;
}
final uri = Uri.parse(urlString).replace(queryParameters: queryParams);
try {
_channel = IOWebSocketChannel.connect(
uri,
headers: {
'Origin': 'https://api.bynn.com',
'Authorization': _sessionToken != null ? 'Bearer $_sessionToken' : '',
},
);
Future.delayed(const Duration(milliseconds: 500), () {
_sendSubscriptionMessage();
});
_subscription = _channel!.stream.listen(
_onMessage,
onError: (error) {
_scheduleReconnect();
},
onDone: () {
if (state.isConnected) {
_scheduleReconnect();
}
},
);
_startPingTimer();
state = state.copyWith(
isConnected: true,
connectionFailed: false,
);
} catch (e) {
_scheduleReconnect();
}
}