Sip.js: プロパティ「peerConnection」はタイプ「SessionDescriptionHandler」に存在しません

作成日 2020年05月28日  ·  5コメント  ·  ソース: onsip/SIP.js

こんにちは、
sipjs0.15.11からsjipjs0.16.1に移行しようとすると、次の問題が発生しました。 ここで何かが足りませんか?

バグを説明する
プロパティ「peerConnection」はタイプ「SessionDescriptionHandler」に存在しません

ログ

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

再現するには
動作を再現する手順:

  1. ユーザーエージェントを作成し、着信を処理する
  2. ここに記載されているようにメディアを添付してみてくださいattach-media
    このコードを使用する
// 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

最も参考になるコメント

同じ問題が発生し、

全てのコメント5件

より正確には、peerConnectionはファイルplatform / web / session-description-handler /session-description-handler.tsに存在します

  public peerConnection!: RTCPeerConnection;

ただし、 api /session-description-handler.tsにはありません

それが定義ファイルの一部ではない理由ですか?

同じ問題が発生し、

_'sip.js / lib / platform / web'_内のすべてがWeb名前空間にエクスポートされるため、 import { Web } from "sip.js"を使用して、 Web.SessionDescriptionHandlerとして参照することもできます。

タイプpeerConnectionは、 SessionDescriptionHandlerインターフェイスには存在しません。 アイデアは、SIP.jsではないためピア接続がない環境用にSDHを作成できるということです。 Web実装を使用していることがわかっている場合は、 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 評価