我正在研究使用Pubnub的服务在对等体之间建立WebRTC连接以获取视频。 有了这个,我希望避免使用我正在使用的socket io,虽然我找不到任何好的例子来演示如何做到这一点。
现在socket io正在处理从客户端和服务器发出的事件。据我所知,当前节点js服务器将不再需要处理任何发出的事件,因为不会使用socket io,但这就是我遇到的问题。我不确定如何设置客户端以相互发信号通知他们需要的信息(连接谁等)
是否有任何简单的例子或实现使用pubnub而不是socket io用于项目,或者有人可能会对我可能没有看到的内容有所了解,谢谢!
编辑:对于任何在Pubnub有经验的人,我正在努力做甚至可能哈哈
答案 0 :(得分:1)
目标是在两个对等体之间交换ICE候选数据包。 ICE candidate packets are structured payloads which contain possible path recommendations between two peers.
你可以使用一个lib来处理http://www.sinch.com/这样的细节,下面是你要采取的一般方向:
<script src="http://cdn.pubnub.com/pubnub-3.6.3.min.js"></script>
<script>(function(){
// INIT P2P Packet Exchanger
var pubnub = PUBNUB({
publish_key : 'demo',
subscribe_key : 'demo'
})
// You need to specify the exchange channel for the peers to
// exchange ICE Candidates.
var exchange_channel = "p2p-exchange";
// LISTEN FOR ICE CANDIDATES
pubnub.subscribe({
channel : exchange_channel,
message : receive_ice_candidates
})
// ICE CANDIDATES RECEIVER PROCESSOR FUNCTION
function receive_ice_candidates(ice_candidate) {
// Attempt peer connection or upgrade route if better route...
console.log(ice_candidate);
// ... RTC Peer Connection upgrade/attempt ...
}
// SEND ICE CANDIDATE
function send_ice_candidate(ice) {
pubnub.publish({
channel : exchange_channel,
message : ice
})
}
// CREATE ICE CANDIDATES
var pc = new RTCPeerConnection();
navigator.getUserMedia( {video: true}, function(stream) {
pc.onaddstream({stream:stream});
pc.addStream(stream);
pc.createOffer( function(offer) {
pc.setLocalDescription(
new RTCSessionDescription(offer),
send_ice_candidate, // - SEND ICE CANDIDATE via PUBNUB
error
);
}, error );
} );
// ERROR CALLBACK
function error(e) {
console.log(e);
}
})();</script>
等待更多有趣的细节 - https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection