设置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

本文为原创文章,转载请注明出处,欢迎访问作者网站(和而不同)

发表评论

error: Content is protected !!