Как отклонить вызов WebRTC

Я сделал простое приложение для звонков с использованием WebRTC. Я установил соединение и теперь могу звонить из одного браузера в другой.

Одна вещь, которую я до сих пор не могу понять и не могу найти в стандарте WebRTC, это ... Как мне отклонить предложение звонка.

Если я получу предложение от абонента, о котором я думал подписаться

if(msg.type == 'offer') {
    if(confirm(msg.sender+" is calling you ...")) {
        $.calling.calleePeer.setRemoteDescription(new RTCSessionDescription(msg));
        $.calling.calleePeer.addStream($.calling.localstream);
        $.calling.calleePeer.createAnswer($.calling.setLocalCalleeAndSendDescription, null, $.calling.mediaConstraints);

    } else {
        // TODO What to do here in order to reject the offer?
    }
}

Теперь все работает, когда я принимаю предложение, но как я могу сообщить вызывающему абоненту, что меня сейчас не интересует звонок? Думаю, в стандарт встроено какое-то решение.


person Jan Vorcak    schedule 16.02.2013    source источник
comment
Насколько я знаю, в стандарте нет ничего встроенного для отклонения запросов на подключение. Однако вы можете закодировать такую ​​систему любым количеством способов с помощью вашего метода сигнализации. Например, если вы используете WebSocket, отправьте вызывающему абоненту строку отклонения после получения предложения, а затем попросите вызывающего абонента интерпретировать эту строку соответствующим образом.   -  person HartleySan    schedule 18.02.2013


Ответы (1)


В WebRTC протокол сигнализации - это то, что вы определяете, поэтому приложение должно отправить команду другой стороне, информируя о том, что предложение было отклонено пользователем.

Когда вы это сделаете, вы должны закрыть объекты PeerConnection на обеих сторонах, и браузер перестанет ждать или пытаться установить соединение.

if(msg.type == 'offer') {
    if(confirm(msg.sender+" is calling you ...")) {
        $.calling.calleePeer.setRemoteDescription(new RTCSessionDescription(msg));
        $.calling.calleePeer.addStream($.calling.localstream);
        $.calling.calleePeer.createAnswer($.calling.setLocalCalleeAndSendDescription, null, $.calling.mediaConstraints);

    } else {
        $.calling.calleePeer.close();
        // Send a command to the other party (i.e. a response to the invitation) rejecting the offer.
    }
}

Клиент, запустивший процесс, должен сделать то же самое при получении отказа.

// I suppose you have something like this.
$.calling.callerPeer.close();
person nakib    schedule 18.02.2013
comment
Хорошо, так что в стандарте нет ничего встроенного, и мне нужно сделать это с помощью канала сигнализации, спасибо - person Jan Vorcak; 18.02.2013