#javascript #node.js #webrtc #html5-audio
#javascript #node.js #webrtc #html5-аудио
Вопрос:
В настоящее время я использую библиотеку Kandy WebRTC для выполнения аудиовызовов на основе WebRTC. Поскольку эта библиотека JavaScript внутренне использует WebSocket, проблема, с которой я сталкиваюсь, заключается в поддержании сеанса, если пользователь обновляет страницу.
Например, когда пользователь A подключается через библиотеку Kandy и звонит пользователю B, и во время вызова, если пользователь обновляет страницу, соединение теряется у пользователя A, но пользователь B все еще находится на вызове, поскольку он неправильно завершается пользователем A. Препятствием является то, что библиотека Kandy не предоставляет способа повторного подключения к текущему вызову.
Следовательно, я хочу знать, есть ли что-нибудь, что мы могли бы сделать на стороне клиента, чтобы справиться с этой проблемой обновления страницы. Один из подходов, который пришел мне в голову, состоит в том, чтобы перенести логику клиента JavaScript Kandy
на Node.js
сервер и получить доступ к вызову и приему вызовов с использованием HTTP
сервисов. Но я действительно не уверен, как будет работать звук в этом случае, потому что для этого Kandy library
требуется, чтобы медиа-носитель или <audio>
тег для рендеринга устанавливали медиа-канал.
Вот ссылка на Codepen просто для понимания кода, из-за соображений безопасности я не смогу предоставить учетные данные, но вы можете использовать фрагмент кода, который мы использовали для примера.
Проверьте kandy.media.renderTracks(call.remoteTracks, "#remote-container")
, для чего требуется div
тег <div id="remote-container"></div>
для отображения мультимедиа.
Ответ №1:
Это похоже на ошибку в Kandy SDK. Обычно сервер сигнализации (в данном случае websocket) может определить, закрывает ли клиент, находящийся в вызове, websocket и уведомляет другой конец вызова.
Использование window.onbeforeunload для отправки клиентского «пока» также может помочь.
Комментарии:
1. есть ли какой-либо способ восстановить его, а не завершить