рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рд╕рд┐рдкрдЬ 0.15.11 рд╕реЗ sjipjs 0.16.1 рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рдЖрдИред рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреЛрдИ рдЪреВрдХ рд╣реЛ рд░рд╣реА рд╣реИ?
рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рд╕рдВрдкрддреНрддрд┐ 'peerConnection' рдкреНрд░рдХрд╛рд░ 'SessionDescriptionHandler' рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
рд▓реЙрдЧреНрд╕
error TS2339: Property 'peerConnection' does not exist on type 'SessionDescriptionHandler'.
рдкреНрд░рдЬрдирди рдХрд░рдирд╛
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
// 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' рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдпрд░рдХрдиреЗрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо/рд╡реЗрдм/рд╕рддреНрд░-рд╡рд┐рд╡рд░рдг-рд╣реИрдВрдбрд▓рд░/рд╕рддреНрд░-рд╡рд┐рд╡рд░рдг- рд╣реИрдВрдбрд▓рд░.рдЯреАрдПрд╕ рдкрд░ рдореМрдЬреВрдж рд╣реИ
public peerConnection!: RTCPeerConnection;
рд▓реЗрдХрд┐рди api/session-description-handler.ts . рдкрд░ рдирд╣реАрдВ
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ?
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '_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();
}
рд╕реБрдзрд╛рд░ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕рд╣рд░реНрд╖ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП '_sip.js/lib/platform/web_' рд╕реЗ рд╕рддреНрд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рд╣реИрдВрдбрд▓рд░ рдЖрдпрд╛рдд рдХрд░рддрд╛