参考这个项目
局域网可以点对点直连。

局域网外可以修改其中的index.html,可以修改为如下配置:

# pc = new RTCPeerConnection({ sdpSemantics: 'unified-plan'});
pc = new RTCPeerConnection({ 
      sdpSemantics: 'unified-plan',
      iceTransportPolicy: 'relay',
      iceServers: [
        {'urls': 'stun:stun.l.google.com:19302'},
        {'urls':'stun:stun1.l.google.com:19302'},
        {'urls':'stun:stun2.l.google.com:19302'},
        {'urls':'stun:stun3.l.google.com:19302'},
        {'urls':'stun:stun4.l.google.com:19302'},
        {'urls':'stun:stunserver.org'},
        {'urls':'stun:stun.xten.com'},
        {'urls':['turn:numb.viagenie.ca'],'username':'webrtc@live.com','credential':'muazkh'}
      ]
});

PS0: 上述配置我这边能成功打洞,但是很慢,视频传输也很慢,大概要等个十来秒,我理解耗时应该是在gatheringCandidate的步骤中。

PS1: turn server 可以用这个测试是否符合要求
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

PS2: (turn server对带宽要求很高/成本很高) 要保证通讯质量的话,可以自己搭建turn/stun服务器。可以参考这个项目

更多推荐