Data Channels
在pion webrtc
中有非常多的示例,Data Channels
就是其中的一个,当我们第一次打开pion webrtc
的示例时,可能会有点不知所措,不知道他要让我们干什么。
当然,你只要把第一个示例的过程走通了,接下来的示例就比较简单了。
打开 Data Channels
,如下的界面:
如果 Browser base64 Session Description
一直没法生成,或者生成的比较慢,试着把 demo.js中的代码:
const pc = new RTCPeerConnection({
iceServers: [{
urls: 'stun:stun.l.google.com:19302'
}]
})
中iceServers
的去掉,因为我们这里只是在局域网中,不需要穿透。
Browser base64 Session Description
到底是个啥东西呢?其实就是我们的sdp
。生成了sdp
后,需要跟另外一个客户端进行交换。
再来看下,这里生成sdp的技巧:
pc.onicecandidate = event => {
if (event.candidate === null) {
document.getElementById('localSessionDescription').value = btoa(JSON.stringify(pc.localDescription))
}
}
为啥看不到正常sdp
的格式,因为他JSON.stringify(pc.localDescription)
了,为什么这样做,这是为了传输,而且,我们这里是在pc.onicecandidate
中获取sdp
,这个pc.localDescription
中就已经包含ice
的内容了,这点是让我们值得思考的,以为他跟我们以前的流程是不一样的。
这样做的好处是少交换了一次 ice
,生成的sdp
交换到客户端,也就是main.go
程序。
这样进行修改。
调试起来,生成answer
的sdp
:
在这里插入代码片
填入到web
中的Golang base64 Session Description
,启动:
你就会看到,Golang
的客户端在给浏览器不断的发送数据。