Сеансы TokBox уничтожаются

Я пытаюсь, чтобы клиенты публиковали поток аудио/видео, отключали их, а затем снова включали. В первый раз, когда я говорю им опубликовать, а затем отменить публикацию, все работает нормально. Однако в следующий раз, когда я скажу им опубликовать (используя тот же идентификатор сеанса и токен), я получаю сообщение об ошибке «Не удается подключиться, сеанс уже не определен».

Почему "сеанс" уничтожается?.. это неопубликовать? Мой код в значительной степени взят из учебников:

    clientSession = OT.initSession(apiKey, sessionId);
    clientSession.connect(token, function (error) {
        if (error) {
            handleError(error);
        } else {
        clientPublisher = OT.initPublisher(container, {
        insertMode: 'append',
        width: '100%',
        height: '100%'
        }, handleError);
        }
    });
}

Чтобы отменить публикацию:

clientSession.unpublish(clientPublisher);

person Velocedge    schedule 16.09.2017    source источник


Ответы (1)


Есть 2 способа сделать это. Вы можете инициализировать один объект издателя один раз и продолжать использовать его каждый раз при повторной публикации. Или вы можете каждый раз уничтожать и повторно инициализировать нового издателя. Я написал для вас пример обоих подходов:

  1. Повторное использование того же издателя: https://jsbin.com/tobabos/edit?html.
  2. Каждый раз создавайте нового издателя: https://jsbin.com/jawuxez/edit?html.

Примечание. Укажите собственный ключ API, идентификатор сеанса и токен для запуска вышеуказанных JSbins.

Ключевое отличие заключается в том, что для повторного использования издателя вам необходимо сделать следующее:

pub.on('streamDestroyed', e => e.preventDefault());

Это задокументировано здесь: https://tokbox.com/developer/sdks/js/reference/Publisher.html#.event:streamDestroyed

Это гарантирует, что при отмене публикации объект издателя не будет уничтожен, поэтому его можно будет использовать повторно.

Что также происходит, если вы повторно используете издателя, издатель остается на странице, и пользователь все еще может видеть себя. Даже если издатель не транслирует сеанс. Вы можете использовать манипуляции с CSS или DOM, чтобы скрыть издателя, но индикатор веб-камеры останется включенным.

Однако, если вы каждый раз уничтожаете и заново создаете издателя, он исчезает со страницы, а индикатор веб-камеры выключается, пока он не опубликован. В зависимости от браузера и настроек пользователя его могут попросить снова разрешить доступ к его веб-камере.

person aiham    schedule 18.09.2017