Ionic3 Opentok session.connect не работает - PullRequest
0 голосов
/ 24 апреля 2019

Я использую 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 Ответ

0 голосов
/ 26 апреля 2019

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

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

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

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

this.session.connect(this.token);

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

...