publish method

  1. @override
Future<void> publish()

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();
    },
  );
}