html部分
<div class="page-body">
// 推流方的video
<div class="side-item left-side">
推流id:{{ hostId }}
<video
autoplay
ref="remoteDom"
class="camera"
src="#"></video>
</div>
<div class="side-item right-side">
// 接收流方的video
<div>
<input v-model="requestId" type="text"><button
@click="requestConnect"
>请求连接</button>
</div>
<video
autoplay
ref="receiveDom"
class="camera"
src="#"></video>
</div>
</div>
js部分
import {Peer} from 'peerjs'
import {onMounted,ref,reactive} from 'vue'
const requestId = ref('')
const hostId = ref('')
const receiveId = ref('')
const receiveDom = ref(null)
const remoteDom = ref(null)
被请求方
const peer = new Peer()
peer.on('open',id => {
hostId.value = id
})
peer.on('connection',(connect) => {
receiveId.value = connect.peer
connect.on('data',data => {
console.log(data)
})
})
const stream = await navigator.mediaDevices.getUserMedia({video:true,audio:true})
remoteDom.value.srcObject = stream
peer.on('call',call => {
call.answer(stream);
call.on('stream', (remoteStream) => {
receiveDom.value.srcObject = remoteStream;
});
})
发送请求方
const receiveIdPeer = reactive({obj:null})
const requestConnect = () => {
receiveIdPeer.obj = new Peer()
receiveIdPeer.obj.on('open',() => {
let conn = receiveIdPeer.obj.connect(requestId.value)
conn.on('open', async()=>{
conn.send('连接成功')
const stream = await navigator.mediaDevices.getUserMedia({video:true,audio:true})
const call = receiveIdPeer.obj.call(requestId.value,stream)
call.on('stream', (remoteStream) => {
receiveDom.value.srcObject = remoteStream;
});
})
})
receiveIdPeer.obj.on('connect',(connect)=>{
connect.on('data',data=>{
console.log('被请求方发送回来的消息',data)
})
})
}