Sip.js: Die Eigenschaft 'peerConnection' existiert nicht für den Typ 'SessionDescriptionHandler'

Erstellt am 28. Mai 2020  ·  5Kommentare  ·  Quelle: onsip/SIP.js

Hallo,
Ich habe das folgende Problem beim Versuch, von sipjs 0.15.11 auf sjipjs 0.16.1 zu migrieren. Übersehe ich hier etwas?

Beschreibe den Fehler
Die Eigenschaft 'peerConnection' existiert nicht für den Typ 'SessionDescriptionHandler'

Protokolle

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

Reproduzieren
Schritte zum Reproduzieren des Verhaltens:

  1. Erstellen Sie einen Benutzeragenten und bearbeiten Sie eingehende Anrufe
  2. Versuchen Sie, ein Medium wie hier beschrieben anzuhängen Medien anhängen
    Mit diesem 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();
}

Erwartetes Verhalten
Die Eigenschaft 'peerConnection' sollte im Typ 'SessionDescriptionHandler' vorhanden sein.

Beobachtetes Verhalten
Die Kompilierung wirft den Fehler:
Die Eigenschaft 'peerConnection' existiert nicht für den Typ 'SessionDescriptionHandler'

Umweltinformationen

  • SipJS 0.16.1
Typescript

Hilfreichster Kommentar

Ich habe das gleiche Problem und importiere den SessionDescriptionHandler von '_sip.js/lib/platform/web_', um es zu beheben. Bisher funktioniert es gut.

Alle 5 Kommentare

Genauer gesagt existiert peerConnection in der Datei platform/web/session-description-handler/session-description-handler.ts

  public peerConnection!: RTCPeerConnection;

Aber nicht auf api/session-description-handler.ts

Ist es deshalb nicht Teil der Definitionsdatei?

Ich habe das gleiche Problem und importiere den SessionDescriptionHandler von '_sip.js/lib/platform/web_', um es zu beheben. Bisher funktioniert es gut.

Alles in _'sip.js/lib/platform/web'_ wird in den Web Namespace exportiert, Sie können also auch import { Web } from "sip.js" und dann als Web.SessionDescriptionHandler referenzieren.

Typ peerConnection existiert nicht auf der SessionDescriptionHandler Schnittstelle. Die Idee ist, dass Sie eine SDH für eine Umgebung schreiben könnten, die nicht SIP.js ist und daher keine Peer-Verbindung hat. Importieren und verwenden Sie Typen aus Web.SessionDescriptionHandler wenn Sie wissen, dass Sie die Webimplementierung verwenden. Dies ist beabsichtigt.

Falls jemand dieses Problem auch haben sollte. So hat es bei mir funktioniert:

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

Verbesserungen und Anmerkungen werden gerne entgegengenommen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

raphaelhovsepyan picture raphaelhovsepyan  ·  6Kommentare

Pjata picture Pjata  ·  11Kommentare

seanbright picture seanbright  ·  3Kommentare

tm1000 picture tm1000  ·  12Kommentare

Juli0GT picture Juli0GT  ·  5Kommentare