Sip.js: الخاصية "peerConnection" غير موجودة في النوع "SessionDescriptionHandler"

تم إنشاؤها على ٢٨ مايو ٢٠٢٠  ·  5تعليقات  ·  مصدر: onsip/SIP.js

مرحبا،
حصلت على المشكلة التالية عند محاولة الترحيل من sipjs 0.15.11 إلى sjipjs 0.16.1. نسيت شيئا ما هنا؟

صف الخلل
الخاصية "peerConnection" غير موجودة في النوع "SessionDescriptionHandler"

السجلات

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

لإعادة إنتاج
خطوات إعادة إنتاج السلوك:

  1. إنشاء وكيل مستخدم والتعامل مع المكالمة الواردة
  2. حاول إرفاق وسائط كما هو مذكور هنا إرفاق وسائط
    باستخدام هذا الرمز
// 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();
}

سلوك متوقع
يجب أن تكون الخاصية "peerConnection" موجودة في النوع "SessionDescriptionHandler"

السلوك المرصود
يلقي التجميع الخطأ:
الخاصية "peerConnection" غير موجودة في النوع "SessionDescriptionHandler"

معلومات البيئة

  • SipJS 0.16.1
Typescript

التعليق الأكثر فائدة

أواجه نفس المشكلة ، واستوردت SessionDescriptionHandler من "_sip.js / lib / platform / web_" لإصلاحها ، إنها تعمل بشكل جيد حتى الآن.

ال 5 كومينتر

لكي تكون أكثر دقة ، فإن الاتصال النظير موجود على الملف الأساسي / الويب / الجلسة-الوصف-المعالج / الجلسة-الوصف-handler.ts

  public peerConnection!: RTCPeerConnection;

ولكن ليس على معالج api / session-description-handler.ts

ألهذا السبب ليس جزءًا من ملف التعريف؟

أواجه نفس المشكلة ، واستوردت SessionDescriptionHandler من "_sip.js / lib / platform / web_" لإصلاحها ، إنها تعمل بشكل جيد حتى الآن.

يتم تصدير كل شيء في _'sip.js / lib / platform / web'_ في مساحة الاسم Web ، لذا يمكنك أيضًا import { Web } from "sip.js" ثم الرجوع إلى Web.SessionDescriptionHandler .

اكتب peerConnection لن يكون موجودًا على واجهة SessionDescriptionHandler . الفكرة هي أنه يمكنك كتابة SDH لبيئة ليست SIP.js وبالتالي ليس لها اتصال نظير. استيراد أنواع واستخدامها من Web.SessionDescriptionHandler إذا كنت تعلم أنك تستخدم تنفيذ الويب. هذا متعمد.

إذا كان شخص ما يجب أن يكون لديه هذه المشكلة أيضًا. هذه هي الطريقة التي عملت بها بالنسبة لي:

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

يتم قبول التحسينات والملاحظات بكل سرور.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات