Ionic3 Opentok session.connect не работает

#android #session #ionic3 #opentok

#Android #сессия #ionic3 #opentok

Вопрос:

Я использую ionic3 с cordova-plugin-opentok@3.2.2 Мой сеанс создается node.js серверная часть, которая возвращает идентификатор сеанса и токен без каких-либо проблем.

Когда я использую этот токен для подключения к сеансу, вызов никогда не возвращается (в коде с ошибкой), и на моем мобильном я вижу окно на телефоне Android, но без какой-либо потоковой передачи с моей камеры.

Пробовал обновить плагин до 3.4.2, но тогда это выдает ошибки в gradle. Просмотрел множество обменов сообщениями о переполнении стека и вопросы и ответы в документации к плагину.

 startCall() {

    // Get the session ID and Token from the server  
  this.discussionService.initiateVideoCall({userId:this.selUser._id.toString(),slot:this.slotDetails}).subscribe(callDetails => {
        this.callDetails = callDetails;
        this.token = this.callDetails.token;
        this.sessionId = this.callDetails.sessionId;
        //this.startVideoCall();
    });

}
startVideoCall() {
    this.session = OT.initSession(this.apiKey, this.sessionId);
    this.publisher = OT.initPublisher('publisher');

    this.session.on({
    streamCreated: (event: any) => {
        this.session.subscribe(event.stream, 'subscriber');
        OT.updateViews();
    },
    streamDestroyed: (event: any) => {
        console.log(`Stream ${event.stream.name} ended because ${event.reason}`);
        OT.updateViews();        
    },
    sessionConnected: (event: any) => {
        this.session.publish(this.publisher);
    }
    });

    this.session.connect(this.token, (error: any) => {
        <<< The line below never gets executed>>>>
if (error) {
                console.log(`There was an error connecting to the session ${error}`);
            }
        });
        this.session.publish(this.publisher);
    }
  

Ответ №1:

Евангелист-разработчик TokBox здесь.

Ранее была проблема с плагином Cordova OpenTok, поскольку он не поддерживал error обработчик для session.connect метода. Это было исправлено в выпуске v3.4.3.

Если вы не можете выполнить обновление, вы можете удалить error обработчик из своей реализации и вызвать connect и опубликовать следующим образом:

 this.session.on({
    sessionConnected: (event: any) => {
        this.session.publish(this.publisher);
    },
});

this.session.connect(this.token);
  

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

Комментарии:

1. Извините за поздний ответ. В конечном итоге я обновлюсь до последних версий, но хотел заставить текущую вещь работать. Я допустил ошибку при создании объекта сеанса («this.session = OT.initSession (this.apiKey, this.SessionID);» Где я передавал пустой apiKey. Однако даже после исправления этого я все еще не вижу свой собственный видеопоток, и я также не получаю событие обратного вызова this.session.on({ sessionConnected: (event: any) => { this.session.publish(this.publisher); }, });

2. Я также установил уровень отладки «OT.setLogLevel (OT.DEBUG); Но я также не вижу никаких ошибок в консоли. Пожалуйста, предложите.

3. Хм, не могли бы вы, пожалуйста, проверить логи идентификаторов сеансов в tokbox.com/developer/tools/inspector_doc и посмотрите, видите ли вы какие-либо ошибки? Уровень журнала предназначен только для JS SDK, вам нужно будет просмотреть собственные журналы. Наконец, я рекомендую сообщить о проблеме здесь: github.com/opentok/cordova-plugin-opentok/issues