Sip.js: La propiedad 'peerConnection' no existe en el tipo 'SessionDescriptionHandler'

Creado en 28 may. 2020  ·  5Comentarios  ·  Fuente: onsip/SIP.js

Hola,
Recibí el siguiente problema al intentar migrar de sipjs 0.15.11 a sjipjs 0.16.1. ¿Me estoy perdiendo de algo?

Describa el error
La propiedad 'peerConnection' no existe en el tipo 'SessionDescriptionHandler'

Registros

error TS2339: Property 'peerConnection' does not exist on type 'SessionDescriptionHandler'.

Reproducir
Pasos para reproducir el comportamiento:

  1. Cree un agente de usuario y maneje la llamada entrante
  2. Tratar de colocar un medio de comunicación como se ha mencionado aquí medios attach-
    Usando este código
// Assumes you have a media element on the DOM
const mediaElement = document.getElementById('mediaElement');

const remoteStream = new MediaStream();
function setupRemoteMedia(session: Session) {
  session.sessionDescriptionHandler.peerConnection.getReceivers().forEach((receiver) => {
    if (receiver.track) {
      remoteStream.addTrack(receiver.track);
    }
  });
  mediaElement.srcObject = remoteStream;
  mediaElement.play();
}

Comportamiento esperado
La propiedad 'peerConnection' debe existir en el tipo 'SessionDescriptionHandler'

Comportamiento observado
La compilación arroja el error:
La propiedad 'peerConnection' no existe en el tipo 'SessionDescriptionHandler'

Información del entorno

  • SipJS 0.16.1
Typescript

Comentario más útil

Me encontré con el mismo problema e importé SessionDescriptionHandler desde '_sip.js/lib/platform/web_' para solucionarlo, funciona bien hasta ahora.

Todos 5 comentarios

Para ser más precisos, peerConnection existe en el archivo plataforma/web/session-description-handler/session-description-handler.ts

  public peerConnection!: RTCPeerConnection;

Pero no en api/session-description-handler.ts

¿Es por eso que no es parte del archivo de definición?

Me encontré con el mismo problema e importé SessionDescriptionHandler desde '_sip.js/lib/platform/web_' para solucionarlo, funciona bien hasta ahora.

Todo en _'sip.js/lib/platform/web'_ se exporta en el espacio Web nombres import { Web } from "sip.js" y luego hacer referencia como Web.SessionDescriptionHandler .

El tipo peerConnection no existirá en la interfaz SessionDescriptionHandler . La idea es que podría escribir un SDH para un entorno que no sea SIP.js y, por lo tanto, no tenga conexión entre pares. Importe y use tipos de Web.SessionDescriptionHandler si sabe que está usando la implementación web. Esto es intencional.

Si alguien también debe tener este problema. Así es como funcionó para mí:

import '{ SessionDescriptionHandler } from 'sip.js/lib/platform/web'

case SessionState.Established:
        let sessionDescriptionHandler: SessionDescriptionHandler = inviter.sessionDescriptionHandler as SessionDescriptionHandler;
        setupRemoteMedia(sessionDescriptionHandler);
        break;

function setupRemoteMedia(session: SessionDescriptionHandler) {
  let receiversList: any = session.peerConnection.getReceivers();
  receiversList.forEach((receiver: RTCRtpReceiver) => {
    if (receiver.track) {
      remoteStream.addTrack(receiver.track);
    }
  });
  mediaElement.srcObject = remoteStream;
  mediaElement.play();
}

Se aceptan con gusto mejoras y comentarios.

¿Fue útil esta página
0 / 5 - 0 calificaciones