tokbox: ошибка тайм-аута подписчика в Safari

При использовании opentok.js v2 видеоканал отлично работает с Chrome и Firefox. Используемая версия opentok взята из этой ссылки: https://static.opentok.com/v2/js/opentok.min.js

Но это не работает с сафари 11.0.3. В событии создания потока сеанса генерируется следующее сообщение об ошибке "Не удалось подключиться к потоку из-за сетевой ошибки. Убедитесь, что ваше соединение не заблокировано брандмауэром". Издатель успешно опубликован, т. е. session.publish(..) работает нормально.

Приведенный ниже код используется для совершения видеовызова:

this.session=OT.initSession(this.apiKey, this.sessionId);

this.session.on({

streamCreated: (event) => {

 

this.session.subscribe(event.stream, 'subscriber');

},

streamDestroyed: (event) => {

console.log(`Stream ${event.stream.name} ended because ${event.reason}`);

}

});

this.session.connect(this.token, () => {
this.publisher=OT.initPublisher('publisher');

this.session.publish(this.publisher);

});

}

Другие исключения в консоли, сгенерированные opentok.js, следующие:

[Error] OT.exception :: title: undefined (1554) msg: OT.Subscriber PeerConnection Error: OT.Subscriber failed to subscribe to a stream in a reasonable amount of time
error
_exceptionHandler (vendor.js:150924)
handleJsException (vendor.js:151002)
onPeerConnectionFailure (vendor.js:162673)
(anonymous function) (vendor.js:162414)
onInvokeTask (vendor.js:4239)
runTask (polyfills.js:3:10225)
invokeTask (polyfills.js:3:16182)
n (polyfills.js:2:31400)


[Error] OT_ICE_WORKFLOW_FAILED: ICEWorkflow: Subscriber PeerConnection with connection (not found) failed: OT.Subscriber failed to subscribe to a stream in a reasonable amount of time
error
dispatchOTError (vendor.js:159161)
(anonymous function) (vendor.js:160080)
handleThisOnce (vendor.js:137437)
(anonymous function) (vendor.js:137675)
onInvokeTask (vendor.js:4239)
runTask (polyfills.js:3:10225)
invokeTask (polyfills.js:3:16182)
n (polyfills.js:2:31400)



[Error] OT.exception :: title: undefined (1554) msg: ICEWorkflow: Subscriber PeerConnection with connection (not found) failed: OT.Subscriber failed to subscribe to a stream in a reasonable amount of time
error
_exceptionHandler (vendor.js:150924)
handleJsException (vendor.js:151002)
dispatchOTError (vendor.js:159163)
(anonymous function) (vendor.js:160080)
handleThisOnce (vendor.js:137437)
(anonymous function) (vendor.js:137675)
onInvokeTask (vendor.js:4239)
runTask (polyfills.js:3:10225)
invokeTask (polyfills.js:3:16182)
n (polyfills.js:2:31400)

 

Все вышеперечисленные ошибки генерируются только в браузере Safari.


person PShah_h    schedule 07.02.2018    source источник


Ответы (1)


Вам необходимо убедиться, что вы создали проект Safari на своем портале учетной записи OpenTok. Дополнительные сведения см. на странице https://tokbox.com/developer/sdks/js/safari/

Похоже, вы используете файл polyfills.js. Если это полифил из Angular, включающий zone.js, вам нужно будет включить исправление для RTCPeerConnections 'zone.js/dist/webapis-rtc-peer-connection' в файл polyfills.js.

import 'zone.js/dist/webapis-rtc-peer-connection';

Вы также, вероятно, захотите включить полифилл для getUserMedia. Дополнительные сведения см. на странице https://github.com/angular/zone.js/issues/948#issuecomment-357558384

person Adam Ullman    schedule 08.02.2018
comment
Да, я создал проект сафари и использую apikey из проекта сафари. - person PShah_h; 08.02.2018
comment
Можете ли вы указать мне, где работает ваше приложение, чтобы я мог его отладить? Похоже, у вас есть несколько полифилов, мне интересно, возятся ли они с родным объектом PeerConnection? - person Adam Ullman; 09.02.2018
comment
Ах да, вы используете полифиллы из Angular? В частности, используя zone.js? Я думаю, вы, вероятно, столкнулись с этой проблемой github.com/angular/zone.js/ вопросы/883 - person Adam Ullman; 09.02.2018
comment
Если это так, вам нужно будет включить файл «zone.js/dist/webapis-rtc-peer-connection» в свои полифиллы, как я сделал здесь github.com/opentok/opentok-web-samples/pull/18 - person Adam Ullman; 09.02.2018
comment
Да, держу пари, что это так, позвольте мне отредактировать мой первоначальный ответ. - person Adam Ullman; 09.02.2018
comment
Да, добавление импорта «zone.js/dist/webapis-rtc-peer-connection» и импорта «zone.js/dist/zone-patch-user-media.js» заставило его работать в Safari. Спасибо за столь оперативный ответ :). Но у меня все еще есть еще одна проблема на IOS 11. Это дает мне ошибку ot_media_err_aborted: неизвестная ошибка при получении пользовательского носителя. Но я все равно отмечу это как принятое, так как ошибка в сафари исчезла. Спасибо - person PShah_h; 12.02.2018
comment
Извините, после еще одной итерации я снова вижу ту же ошибку в Safari. Время ожидания истекло с тем же сообщением об ошибке. Поток не удалось подключить из-за проблем с сетью ... Однако то же соединение на том же компьютере отлично работает в Chrome. - person PShah_h; 12.02.2018
comment
Это приложение Angular 5 работает для вас? opentok.github.io/opentok-web-samples/Angular -Basic-Video-Chat - person Adam Ullman; 13.02.2018
comment
Да, это работает без каких-либо ошибок!. Мое приложение находится на angular 4.4.3. Может ли это быть проблемой? Так же IOS 11 выдает ошибку - person PShah_h; 14.02.2018
comment
Ошибка на Ipad IOS 11 — webkitAudioContext.createMediaStreamSource должен быть экземпляром MediaStream. Есть идеи ? - person PShah_h; 14.02.2018
comment
У меня похожая проблема, но с издателем. Я могу нормально подписаться в Safari, но время публикации истекло (на демо-версии Tokbox, моей платформе и демо-версии @AdamUllman). Никогда не было проблем ни в одном другом браузере, в той же сети, на том же оборудовании, на той же машине. Я ждал несколько месяцев, пока Tokbox рассмотрит проблему. - person Si-N; 18.04.2018
comment
Я тоже заметил это, но особенно при использовании LTE на T-Mobile в Safari на iOS. При подключении через WiFi работает нормально. Это то же самое поведение, которое вы видите? Это при использовании сотовой связи? Можете ли вы попробовать использовать другую сеть и посмотреть, возникнет ли у вас такая же проблема? - person Adam Ullman; 24.04.2018
comment
Так полезно спасибо. OpenTok, если вы слушаете, это должно быть где-то заметно в документации... - person Chris Kooken; 12.08.2020