publish method
Throws SessionPublishException
if the connection fails.
Implementation
@override
Future<void> publish() async {
debugPrint(
'Session.publish: $publisher',
);
final completer = Completer<void>();
_jsVideoSession.publish(
(publisher as WebPublisher).jsPublisher,
JSErrorCallback((error) {
if (error != null) {
final exception = SessionPublishExceptionFactory.fromJsError(error);
debugPrint('Session.publish.callback.error: $exception');
completer.completeError(exception);
} else {
debugPrint('Session.publish.success');
completer.complete();
}
}),
);
return completer.future.catchError((e) {
debugPrint('Session.publish.error: $e');
throw e;
}).timeout(
const Duration(seconds: 30),
onTimeout: () async {
debugPrint('Session.publish.timeout');
throw SessionPublishTimeoutException();
},
);
}