輕松搭建P2P的WebRTC通信:socket.io-p2p
這個模塊提供一種簡便和可靠的方式來搭建一個P2P的WebRTC連接并使用事件(socket.io-protocol)進行通信。
Socket.IO is used to transport signalling data and as a fallback for clients where WebRTCPeerConnectionis not supported.
How to use
Create a socket connection, pass it toP2P. On the Client:
var P2P = require('socket.io-p2p');
var io = require('socket.io-client');
var socket = io();
var p2p = new P2P(socket);
p2p.on('ready', function(){
p2p.usePeerConnection = true;
p2p.emit('peer-obj', { peerId: peerId });
})
// this event will be triggered over the socket transport
// until `usePeerConnection` is set to `true`
p2p.on('peer-msg', function(data){
console.log(data);
});On the server, use the socket.io-p2p-server to take care of signalling. All clients who support WebRTC data connections will exchange signalling data via the default/namespace.
var server = require('http').createServer();
var io = require('socket.io')(server);
var p2p = require('socket.io-p2p-server').Server;
io.use(p2p);
server.listen(3030);WebRTC Peer connections can also be established by exchanging signalling data witin a socket.io room. Do this by calling thep2pserver within theconnectioncallback:
var server = require('http').createServer();
var io = require('socket.io')(server);
var p2p = require('socket.io-p2p-server').Server;
server.listen(3030);
io.on('connection', function(socket){
clients[socket.id] = socket;
socket.join(roomName);
p2p(socket, null, room);
});See chat app for full example.
API
p2psocket = new P2P(socket, opts, cb)
Create a new socket.io-p2p connection.
Theoptsobject can include options for setup of the overall socket.io-p2p connection as well as options for the individual peers - specified usingpeerOpts.
- numClients- max number of peers each client can connect to;5by default.
- autoUpgrade- upgrade to a p2p connection (from s.io one) when peers are ready;trueby default
- peerOpts- object of options to be passed to underlying peers. See here for currently supported options.
cbis an optional callback. Called when connection is upgraded to a WebRTC connection.
p2psocket.on('upgrade', function (data) {})
Triggered when P2P connection is converted to a WebRTC one.
p2psocket.on('peer-error', function (data) {})
Triggered when aPeerConnectionobject errors during signalling.
Roadmap of development
- Support for packets containing multiple binary blobs - packets can only contain one blob in this version
- Allow a peer to act as a relay between peers that don't support PeerConnection and those that do.
PRs and issue reports are most welcome.
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!