WebRTC代码示例

时间:2016-08-17 12:33:40

标签: node.js web webrtc

我正在努力学习WebRTC,我似乎找不到任何有用的东西。我正在寻找一个示例代码。我想要一个用于信令的节点服务器和2个能够使用webRTC在它们之间传输文本的浏览器选项卡。任何人都知道在哪里可以找到工作代码吗?

1 个答案:

答案 0 :(得分:0)

官方WebRTC示例工作,只需直接启动demos即可。然而,他们都是当地的。

如果您需要有节点服务器的示例,请尝试安装emannion/webrtc-audio-video

如果您只想要在两个浏览器标签之间进行通信的演示,请在没有服务器的情况下尝试此fiddle

它使用我编写的 WebService().GetTableDataOfPhase("ORC0005") { (result: AnyObject) in for res in result { self.yourData.append(res) } } dispatch_async(dispatch_get_main_queue(), { print(self.yourData.count) } hack来模仿带有localStorage的Web套接字。用两个标签打开它,或者更好,两个窗口,这样你就可以看到它们了。

localSocket
var pc = new RTCPeerConnection();

var call = e => navigator.mediaDevices.getUserMedia({video: true, audio: true})
  .then(stream => pc.addStream(video.srcObject = stream)).catch(log);

pc.onaddstream = e => video.srcObject = e.stream;
pc.oniceconnectionstatechange = e => log(pc.iceConnectionState);
pc.onicecandidate = e => sc.send({ice: e.candidate});
pc.onnegotiationneeded = e => pc.createOffer()
  .then(sdp => pc.setLocalDescription(sdp).then(() => sc.send({sdp}))).catch(log);

var sc = new localSocket();
sc.onmessage = e => e.data.sdp && pc.setRemoteDescription(e.data.sdp)
  .then(() => pc.signalingState == "stable" || pc.createAnswer()
    .then(sdp => pc.setLocalDescription(sdp).then(() => sc.send({sdp}))))
  .catch(log) || e.data.ice && pc.addIceCandidate(e.data.ice).catch(log);

var log = msg => div.innerHTML += "<br>" + msg;

(不幸的是,我的诀窍并不适用于堆栈代码段,因此请在两个标签中启动fiddle。)

哦,在WebRTC固化之前,始终使用adapter.js来避免浏览器差异。