From a99a9d7acca99205e54d4611d813fff54980cc1e Mon Sep 17 00:00:00 2001 From: wang_yp <357754663@qq.com> Date: Thu, 17 Oct 2024 12:17:35 +0800 Subject: [PATCH] fix(amap):core --- src/util/webRtc.ts | 68 ++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/src/util/webRtc.ts b/src/util/webRtc.ts index 5f3c561..b4a6a8e 100644 --- a/src/util/webRtc.ts +++ b/src/util/webRtc.ts @@ -61,40 +61,60 @@ class WebRtc { } } async createOffer() { - try { - const configuration = { - iceServers: [{ urls: 'stun:127.0.0.1:19302' }] - }; - const peerConnection = new RTCPeerConnection(configuration); - this.pee = peerConnection - - // 获取远方流添加到页面播放 - peerConnection.ontrack = event => { - const remoteVideo = document.querySelector('#remoteVideo') as HTMLVideoElement; - remoteVideo.autoplay = true - remoteVideo.controls = true - remoteVideo.srcObject = event.streams[0]; - event.track.onmute = function (event) { - remoteVideo.play() - } - }; - await this.getMedia(peerConnection) - peerConnection.onicecandidate = e => { - if (!e.candidate) { - return + var url = + 'http://rw.quwanya.cn:12217/api/turn?service=turn&username=flutter-webrtc'; + fetch(url) + .then(response => response.json()) + .then(data => { + const configuration = { + iceServers: [ + { + urls: data.uris, + "username": data.username, + "credential": data.password + }, + ] } - this.ws?.send(JSON.stringify({ type: 'candidate', data: e })) - } + this.gets(configuration) + }) + try { + } catch (error) { console.log(error); } } + + async gets(configuration) { + console.log(configuration); + + const peerConnection = new RTCPeerConnection(configuration); + this.pee = peerConnection + + // 获取远方流添加到页面播放 + peerConnection.ontrack = event => { + const remoteVideo = document.querySelector('#remoteVideo') as HTMLVideoElement; + remoteVideo.autoplay = true + remoteVideo.controls = true + remoteVideo.srcObject = event.streams[0]; + event.track.onmute = function (event) { + remoteVideo.play() + } + }; + await this.getMedia(peerConnection) + + peerConnection.onicecandidate = e => { + if (!e.candidate) { + return + } + this.ws?.send(JSON.stringify({ type: 'candidate', data: e })) + } + } sendOffer(userId) { let that = this; that.userToId = userId; that.video = document.getElementById('rtcVideo') as HTMLVideoElement; - if (that.pee?.connectionState==="closed"){ + if (that.pee?.connectionState === "closed") { that.createOffer() } that.pee?.createOffer().then(function (offer) {