establishConnection method
void
establishConnection({
- bool forceConnection = false,
- int numberOfRetries = 3,
- String? forceAccessToken,
- Function? callbackConnected,
override
Implementation
@override
void establishConnection({
bool forceConnection = false,
int numberOfRetries = 3,
String? forceAccessToken,
Function? callbackConnected,
}) {
unloadHandler(() {
_socket?.disconnect();
_socket = null;
});
if (_authLocal.accessToken.isEmpty ||
(_socket != null && !forceConnection)) {
return;
}
disconnection();
final String mAccessToken = forceAccessToken ?? _authLocal.accessToken;
final options = OptionBuilder()
.setTransports(kIsWeb ? ['polling'] : ['websocket'])
.enableReconnection()
.enableForceNew()
.setParser(
ParserOptions(
encoder: () => MsgPackEncoder(),
decoder: () => MsgPackDecoder(),
),
)
.setExtraHeaders(
{
'Authorization': 'Bearer $mAccessToken',
},
).build();
_socket = io(WaterbusSdk.serverConfig.url, options);
_socket?.connect();
_socket?.onError((data) async {
if (_authLocal.accessToken.isEmpty || numberOfRetries == 0) return;
final (String newAccessToken, _) = await _dioConfig.onRefreshToken(
oldAccessToken: mAccessToken,
);
Future.delayed(1.seconds, () {
establishConnection(
forceConnection: true,
forceAccessToken: newAccessToken,
numberOfRetries: numberOfRetries - 1,
);
});
});
_socket?.onConnect((_) async {
callbackConnected?.call();
_logger.log('established connection - sid: ${_socket?.id}');
_listenToRoomEvents();
_listenToMediaEvents();
_listenToRenegotiationEvents();
_listenToChatEvents();
_listenToSystemEvents();
});
}