Sip.js: La propriété 'peerConnection' n'existe pas sur le type 'SessionDescriptionHandler'

Créé le 28 mai 2020  ·  5Commentaires  ·  Source: onsip/SIP.js

Bonjour,
J'ai eu le problème suivant en essayant de migrer de sipjs 0.15.11 vers sjipjs 0.16.1. Est-ce que j'ai râté quelque chose?

Décrivez le bogue
La propriété 'peerConnection' n'existe pas sur le type 'SessionDescriptionHandler'

Journaux

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

Reproduire
Étapes pour reproduire le comportement :

  1. Créer un agent utilisateur et gérer les appels entrants
  2. Essayez de joindre un média comme mentionné ici attach-media
    Utilisation de ce code
// 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();
}

Comportement attendu
La propriété 'peerConnection' doit exister sur le type 'SessionDescriptionHandler'

Comportement observé
La compilation renvoie l'erreur :
La propriété 'peerConnection' n'existe pas sur le type 'SessionDescriptionHandler'

Informations sur l'environnement

  • SipJS 0.16.1
Typescript

Commentaire le plus utile

Je rencontre le même problème et j'importe le

Tous les 5 commentaires

Pour être plus précis, peerConnection existe sur le fichier platform/web/session-description-handler/session-description-handler.ts

  public peerConnection!: RTCPeerConnection;

Mais pas sur api/session-description-handler.ts

Est-ce pour cela qu'il ne fait pas partie du fichier de définition ?

Je rencontre le même problème et j'importe le

Tout dans _'sip.js/lib/platform/web'_ est exporté dans l'espace Web noms import { Web } from "sip.js" puis référencer comme Web.SessionDescriptionHandler .

Le type peerConnection n'existera pas sur l'interface SessionDescriptionHandler . L'idée est que vous puissiez écrire un SDH pour un environnement qui n'est pas SIP.js et n'a donc pas de connexion homologue. Importez et utilisez les types de Web.SessionDescriptionHandler si vous savez que vous utilisez l'implémentation Web. C'est intentionnel.

Si quelqu'un devait aussi avoir ce problème. C'est comme ça que ça a fonctionné pour moi:

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();
}

Les améliorations et remarques sont acceptées avec plaisir.

Cette page vous a été utile?
0 / 5 - 0 notes