WebRTC实时通信 (五)| STUN服务器配置
设置STUN服务器的先决条件
基本理解JavaScript和web开发概念,基本理解NAT遍历以及如何建立对等连接
选择STUN服务器
有许多免费和付费的STUN服务器服务。一些流行的是
- Metered Global WebRTC STUN和TURN服务器
- 谷歌STUN服务器
- 也可以设置自己的STUN服务器
设置WebRTC配置
需要设置配置对象。此对象包括有关ICE(交互式连接建立)服务器的信息。同时具有STUN和TURN服务器。
STUN服务器基本配置示例
let configuration = {
'iceServers': [{
'urls': 'stun:stun.l.google.com:19302'
}]
};
创建对等连接现在,我们将使用配置创建一个新的RTCPeerConnection对象。此对象表示本地计算机和远程对等计算机之间的WebRTC连接
let peerConnection = new RTCPeerConnection(configuration);
创建和发送报价
要启动与远程对等方的连接,我们需要创建一个报价。在该报价中,我们将包括有关媒体轨道、音频和视频以及我们需要打开的任何其他数据通道的信息
peerConnection.createOffer()
.then(offer => peerConnection.setLocalDescription(offer))
.then(() => {
// Send the offer to the remote peer using your signaling server
});
ICE candidates
当RTC对等连接找到ICE candidates时,会触发“icecandidate”事件。
我们需要在客户端处理此事件,并将ICE candidates发送到远程对等方
peerConnection.onicecandidate = event => {
if (event.candidate) {
// Send the ICE candidate to the remote peer using your signaling server
}
};
接入offers, Answers and ICE candidates
我们需要使用RTCPeerConnection上的“setRemoteDescription”和“addIceCcandidate”等函数来侦听来自信令服务器的消息
// Listen for messages from your signaling server
signalingServer.onmessage = message => {
if (message.offer) {
peerConnection.setRemoteDescription(new RTCSessionDescription(message.offer));
// Create an answer and send it back to the remote peer
peerConnection.createAnswer()
.then(answer => peerConnection.setLocalDescription(answer))
.then(() => {
// Send the answer back to the remote peer using your signaling server
});
} else if (message.answer) {
peerConnection.setRemoteDescription(new RTCSessionDescription(message.answer));
} else if (message.iceCandidate) {
peerConnection.addIceCandidate(new RTCIceCandidate(message.iceCandidate));
}
};
这就是在客户端设置STUN服务器的方法。
0