Как завершить вызов webrt c с помощью JsSip? - PullRequest
0 голосов
/ 18 июня 2020

Все мои перестановки установления и завершения вызова работают, кроме одной.

Когда вызывающий абонент вешает трубку, RtcSession вызываемого вызывает событие «завершено», где я вызываю RtcSession.terminate (), но это вызывает исключение «Недействительный статус 8». Я остался с красным значком записи, который все еще отображается на вкладке Chrome, а элемент на странице все еще считает секунды. Какое действие я должен предпринять в обработчике событий "завершено", чтобы правильно завершить работу и освободить аудиоканалы?

Код и вывод журнала ...

        'ended': (e: EndEvent) => {                                                                                                                                    
             console.log('[cs71] incoming call ended with cause: ' + e.cause, e, rtcsession);                                                                                
             rtcSession.terminate(); 
    } 
[cs71] incoming call ended with cause: Terminated {originator: "remote", message: IncomingRequest, cause: "Terminated"}cause: "Terminated"message: IncomingRequestbody: ""call_id: "c1f78de2-2bf6-1239-0e9b-54e1ad8bb9d6"cseq: 21685437data: "BYE sip:ls6kfceg@hv5oev3nq800.invalid;transport=ws SIP/2.0
↵Via: SIP/2.0/WSS 192.168.1.44:8089;branch=z9hG4bKjKDymcS0ter8g
↵Max-Forwards: 70
↵From: <sip:user7@192.168.1.44:40756>;tag=H3D3Qy5StX67F
↵To: <sip:ls6kfceg@hv5oev3nq800.invalid>;transport=ws;transport=udp;tag=55gpu8kiru
↵Call-ID: c1f78de2-2bf6-1239-0e9b-54e1ad8bb9d6
↵CSeq: 21685437 BYE
↵Content-Length: 0
↵
↵"from: NameAddrHeader {_uri: URI, _parameters: {…}, _display_name: undefined}from_tag: "H3D3Qy5StX67F"headers: {Via: Array(1), Max-Forwards: Array(1), From: Array(1), To: Array(1), Call-ID: Array(1), …}method: "BYE"ruri: URI {_parameters: {…}, _headers: {…}, _scheme: "sip", _user: "ls6kfceg", _host: "hv5oev3nq800.invalid", …}sdp: nullserver_transaction: NonInviteServerTransaction {_events: {…}, _eventsCount: 0, _maxListeners: undefined, type: "nist", id: "z9hG4bKjKDymcS0ter8g", …}to: NameAddrHeader {_uri: URI, _parameters: {…}, _display_name: undefined}to_tag: "55gpu8kiru"transport: Transport {status: 0, socket: WebSocketInterface, sockets: Array(1), recovery_options: {…}, recover_attempts: 0, …}ua: UA {_events: {…}, _eventsCount: 7, _maxListeners: undefined, _cache: {…}, _configuration: {…}, …}via: {protocol: "SIP", transport: "WSS", host_type: "IPv4", host: "192.168.1.44", port: 8089, …}via_branch: "z9hG4bKjKDymcS0ter8g"__proto__: IncomingMessageoriginator: "remote"__proto__: Object {rtcSession: RTCSession, __isRinging: "remote", __options: {…}}

exception INVALID_STATE_ERROR: Invalid status: 8
    at RTCSession.terminate (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:286:46)
    at RTCSession.ended (https://local-1-44.chalk.tel:8081/src/ChSip.js:74:34)
    at emitOne (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:990:236)
    at RTCSession.emit (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:994:49)
    at RTCSession._ended (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:468:2205)
    at RTCSession.receiveRequest (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:337:1044)
    at Dialog.receiveRequest (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:71:85)
    at UA.receiveRequest (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:832:97)
    at UA.onTransportData (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:871:133)
    at Transport._onData (https://local-1-44.chalk.tel:8081/lib/jssip-3.5.0.js:715:66)
...