#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