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 :
// 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
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.
Commentaire le plus utile
Je rencontre le même problème et j'importe le