Замирания chrome 64+ при отправке webrtc

Здравствуйте,
Обнаружили неприятный трудновоспроизводимый баг в chrome, ориентировочно 64 версии и свежее - фоновая вкладка с отправляемой камерой/скрин-шарингом "залипает", в ней перестают работать таймеры JS, она не реагирует на входящие websocket-данные и тп. При этом сам webrtc-стрим работает нормально. Другие вкладки chrome, даже активные - тоже залипают, по крайней мере webrtc-internals. Youtube в это время в этом же chrome играет нормально. Пока удалось воспроизводить баг на МакОС, на Windows - неясно. В devtools chrome в Network->WS flashphoner также не отправляет свои нотификации, такие как NOT_ENOUGHT_BANDWIDTH, в это время.
Вы не сталкивались с таким поведением случайно?
 

Max

Administrator
Staff member
Здравствуйте.
Делаем тест под Windows 8.1:
1. Публикуем поток из примера Screen Sharing в Chrome 65, 64 bit.
2. Открываем Developer Tools - Network, наблюдаем ping / pong по вебсокетам.
3. Сворачиваем окно браузера (фоновый режим?).
4. Разворачиваем окно браузера. Видим что ping / pong сообщения ходили в то время, когда вкладка была свернута.
В тесте использовалась настройка на стороне сервера:
Code:
keep.alive_algorithm=HIGH_LEVEL
Т.е. сервер отправляет простое текстовое сообщение ping через вебсокеты, клиент(браузер) отвечает текстовым сообщением pong.
Из этого теста видно, что проблема не воспроизводится под Windows. Вебсокеты работают.
 

Attachments

Max

Administrator
Staff member
Аналогично на Mac OS High Sierra, Chrome 65.
Если сворачиваем вкладку с примером Screen Sharing, websocket продолжает работать, но в Chrome Developer Console это не отображается.
Wireshark стабильно показывает Websocket фреймы по порту 8443 (websocket SSL по-умолчанию).

Проблема с вебсокетами может быть если они конфликтуют с другими вебсокетами, работающими в основном потоке.
Проверьте с чистым примером: https://wcs5-eu.flashphoner.com/client2/examples/demo/streaming/screen-sharing/screen-sharing.html
Если в примере проблем не будет, возможно конфликт где-то в коде.
 
В том-то и дело, что баг трудновоспроизводимый, и совсем не факт, что он связан с Flashphoner. Во вложении скриншоты с замершим webrtc-internals, 4 минуты зависания, "замершим" и "отмершим" websocket'ом к Flashphoner. Наш вебсокет на страничке точно так же "залипает"
Screen Shot 2018-03-13 at 1.23.54 PM.png
f1.jpg
f2.jpg
 
Top