2014-10-09 1 views
2

Я установил видеочат между двумя одноранговыми узлами, используя WebRTC. Я хотел бы разрешить сверстнику прекратить чат, а другой, чтобы узнать, что чат закончился. Как только чат заканчивается, некоторый код необходимо выполнить для обоих сверстников. Объект PeerConnection имеет метод removeStream(), который должен вызывать прослушиватель . Это было бы идеально для моего варианта использования, однако, до того, как вызывается onremovestream(), необходимо повторное согласование (предложение/ответ) между сверстниками. Для моего случая это кажется странным. Зачем мне переговариваться только для отключения? Должен ли объект PeerConnection реализовать, что поток не поступает от другого пользователя? Мой вопрос: Как я могу завершить PeerConnection и предупредить другого пользователя?Завершение видеозвонка WebRTC между двумя сверстниками

+0

Причина, по которой она пересматривается, относится к случаю, когда у вас более одного потока. Вы можете просто закрыть соединение, если у вас есть только один медиапоток в соединении. –

+0

@BenjaminTrent, как бы один друг знал, когда другой закрыл поток в моем случае? Есть ли слушатель? – chRyNaN

+0

Как общаются сверстники? То есть они способны отправлять сообщения друг другу? Или они могут общаться только с сером? – AeroBuffalo

ответ

1

Вы можете просто закрыть соединение. Другой одноранговый узел может прослушивать сигнал oniceconnectionstatechange, а состояние disconnected означает, что ваш партнер закрыл соединение/больше не доступен. Если бы я был вами, я бы сделал таймаут перед закрытием, поскольку это состояние может быть из-за слабого сетевого подключения. MDN has some good info

Или вы можете отслеживать соединения с вашим сигнальным сервером и сигнализировать сверстникам, когда кто-то уходит. В любом случае это сработает.

+0

Я подумывал использовать сигнальный канал, чтобы предупредить другого пользователя. Я рассмотрю onicconnectionstatechange. большое спасибо – chRyNaN

1

Открыть информационный канал и использовать его, чтобы сказать «Я сделан»; когда одна сторона получает «Я закончил», она говорит: «Хорошо, все готово». Чтобы быть абсолютно безопасным и обе стороны понимают, что вызов заканчивается прежде, чем он действительно отключится, используйте трехстороннее рукопожатие по каналам передачи данных для завершения вызова (и вы можете немедленно изменить носитель на черноту/тишину, установив track.enabled = false для аудио- и видеодорожки)