0.1.3 • Published 9 years ago
web-peer v0.1.3
web-peer
Easy way to use WebRTC
What can do
- Send
MediaStreams
(audio, video) - Send messages
- Send files (< 200mb for now)
Install
npm install web-peer
How to use
Web-peer provide only client-side interface for WebRTC. You should use some signaling mechanism.
Example of using with socket.io:
var socket = require('socket.io-client').connect(window.location.host),
Peer = require('web-peer'),
peer = new Peer();
peer.on('error', console.error.bind(console));
peer.on('sync', socket.emit.bind(socket, 'sync'));
socket.on('sync', peer.sync.bind(peer));
and server.js
var io = require('socket.io');
io.sockets.on('connection', function (socket) {
socket.on('sync', function (data) {
socket.broadcast.emit('sync', data);
});
});
io.listen(<your port>)
API
Peer()
creates new peer
var peer = new Peer();
Peer#sync(options)
Two peer should sync with some signaling mechanism. This is only function needed for that.
Any peer emit sync
event when it require to signale to another peer
peer.on('sync', function (options) {
someHowSendToAnotherPeer(options);
});
another peer waing until sync
function will be callen
someHowOnGetSyncMessage(function (options) {
peer.sync(options);
});
Peer#send(messageName, messageData)
send message
peer.send('to-chat', {name: 'boss'});
on another side
peer.messages.on('to-chat', function (info) {
console.log('%s joined to chat', info.name); // boss joined to chat
});
Peer#addStream(mediaStream)
send MediaStream
getUserMedia({ audio: true, video: true }, function (stream) {
peer.addStream(stream);
}, console.error.bind(console));
on another side
peer.on('stream', function (mediaStream) {
var video = document.querySelector('video');
video.src = URL.createObjectURL(mediaStream);
video.play();
});
Peer#sendFile(file)
send File
var input = document.querySelector('input[type=file]');
input.addEventListener('change', function () {
if (input.files.length) {
peer.sendFile(input.files[0]);
}
});
on another side
// file is instanceof private constructor FileStream
which makes easier work with file
peer.on('file', function (file) {
// file will load only after you allow it
file.load();
file.on('progress', function (progress) {
document.querySelector('progress').value = progress;
});
file.on('url', function () {
var link = document.querySelector('a');
a.download = file.name;
a.innerHTML = file.name;
a.href = file.url;
});
});
Peer#close()
close connection
Peer events
error
any errorstream
new incomingMediaStream
file
new incoming filesync
request to use signaling mechanism to send data to another peerclose
when connection is closeddisconnect
when remote peer is disconnected
FileStream#load()
start load file
FileStream#getBlob()
get file blob
FileStream#url
url to filesystem file location
FileStream#name
file name