|
|
@@ -5,71 +5,63 @@
|
|
|
<audiod :state="audioValue" />
|
|
|
<battery :quantity="batteryValue" />
|
|
|
</topBar>
|
|
|
- <video ref="remoteVideo" autoplay playsinline />
|
|
|
+ <video
|
|
|
+ ref="remoteVideo"
|
|
|
+ autoplay
|
|
|
+ playsinline
|
|
|
+ />
|
|
|
<div class="room-gauge">
|
|
|
- <gauge :value="SpeedValue" :gears="conctrlNum % 2 ? '倒档' : '前进'" />
|
|
|
+ <gauge
|
|
|
+ :value="SpeedValue"
|
|
|
+ :gears="conctrlNum % 2 ? '倒档' : '前进'"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang='ts'>
|
|
|
-import { ref, onMounted, inject } from 'vue'
|
|
|
+import {
|
|
|
+ ref, onMounted, inject, watch
|
|
|
+} from 'vue'
|
|
|
import topBar from '@/components/topBar.vue'
|
|
|
import signal from '@/components/signal.vue'
|
|
|
import battery from '@/components/battery.vue'
|
|
|
import gauge from '@/components/gauge.vue'
|
|
|
import audiod from '@/components/audio.vue'
|
|
|
import WebRtcService from '@/services/webrtc.service'
|
|
|
-import useStore from './store/index'
|
|
|
+import useStore from '@/store/index'
|
|
|
|
|
|
const signalValue = ref(5)
|
|
|
const batteryValue = ref(50)
|
|
|
const SpeedValue = ref(60)
|
|
|
const conctrlNum = ref(0)
|
|
|
const audioValue = ref(3)
|
|
|
-const remoteVideo = ref<HTMLVideoElement | null>(null)
|
|
|
+const remoteVideo = ref(null as unknown as HTMLVideoElement)
|
|
|
const RTC = new WebRtcService()
|
|
|
const store = useStore()
|
|
|
-const mqtt = inject('MQTT')
|
|
|
+const mqtt = inject('MQTT') as Any
|
|
|
|
|
|
-onMounted(() => RTC.initRTC(remoteVideo, (event) => {
|
|
|
- console.log(1111, event)
|
|
|
- const { msg, code, data } = event
|
|
|
- // 把自己的answer发送给对方
|
|
|
- if (code === 200 && msg === 'answer') {
|
|
|
- mqtt.send(JSON.stringify(data))
|
|
|
+onMounted(() => RTC.initRTC(remoteVideo.value, (event) => {
|
|
|
+ const { type, data } = event
|
|
|
+ if (type === 'connected') {
|
|
|
+ console.log('可以发送控制数据')
|
|
|
}
|
|
|
-
|
|
|
- // 连接成功
|
|
|
- if(code === 200 && msg === 'connected') {
|
|
|
- console.log('可以发送控制数据');
|
|
|
+ if (type === 'answer') {
|
|
|
+ mqtt.send(JSON.stringify(data))
|
|
|
}
|
|
|
-
|
|
|
- // 连接失败
|
|
|
- if(code === 500) {
|
|
|
- console.log('连接失败');
|
|
|
+ if (type === 'disconnected') {
|
|
|
RTC.distory()
|
|
|
mqtt.disconnect()
|
|
|
}
|
|
|
-
|
|
|
}))
|
|
|
|
|
|
-watch(() => store.mqtt_message, (val) => {
|
|
|
- // mqtt断开连接
|
|
|
- if (val.type === 'leave' || val.type === 'disconnect') {
|
|
|
- router.push('/')
|
|
|
- }
|
|
|
-
|
|
|
- // 对方加入告诉对方开始推流
|
|
|
- if (val.type === 'join') {
|
|
|
- mqtt.send(JSON.stringify({ type: 'startRTC' }))
|
|
|
- }
|
|
|
-
|
|
|
- // 对方发的offer
|
|
|
+watch(() => store.mqtt_message, async (val) => {
|
|
|
+ // 接收offer
|
|
|
if (val.type === 'offer') {
|
|
|
- await Peer.value?.setRemoteDescription(msg)
|
|
|
- const answerd = await Peer.value?.createAnswer()
|
|
|
- await Peer.value?.setLocalDescription(answerd)
|
|
|
+ console.log('offer', val)
|
|
|
+ await RTC.Peer?.setRemoteDescription(val.data)
|
|
|
+ const answerd = await RTC.Peer?.createAnswer()
|
|
|
+ await RTC.Peer?.setLocalDescription(answerd)
|
|
|
}
|
|
|
})
|
|
|
|