createSession method
dynamic
createSession(
{ - String? userId,
})
Implementation
createSession({String? userId}) async {
Completer completer = Completer();
try {
if (serviceId == null ||
serviceKey == null ||
serviceId == '' ||
serviceKey == '') {
completer.completeError('Invalid service id or service key');
}
if (_state != CallState.nullState) {
completer.completeError('Already session created');
}
if (userId != null && userId.length > 64) {
completer.completeError('Too long user id : $userId');
}
if (userId != null && userId.isEmpty) {
completer.completeError('Invalid user id : $userId');
}
_state = CallState.sessionState;
await _ws.connect();
var createSessionResult =
await _ws.requestCreateSession(serviceId, serviceKey, userId);
_session = createSessionResult['session'];
_userId = createSessionResult['user_id'];
_turnId = createSessionResult['turn_id'];
_turnSecret = createSessionResult['turn_secret'];
if (_ws.channel?.closeCode != null) {
completer.completeError('error: Invalid websocket connection state');
}
_audioPublisher = AudioPublisher(_ws, _session, _turnId, _turnSecret);
await _audioPublisher?.pcInitializer();
_videoPublisher = VideoPublisher(_ws, _session, _turnId, _turnSecret);
await _videoPublisher?.pcInitializer();
var userResult = IResponseCreateSession(createSessionResult).toMap();
completer.complete(userResult);
return completer.future;
} catch (error) {
freeResources();
completer.completeError(error);
}
}