управление сеансом после обновления страницы в аудиовызовах на основе WebRTC

#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. есть ли какой-либо способ восстановить его, а не завершить