WebRTC File Sharing i.e. Data Sharing / Demo
DataConnection.js
library lets you:
- Share file of any size
- Share text message of any length
- Text data regardless of the size and type
=
<script src="https://www.webrtc-experiment.com/data-connection.js"></script>
=
var connection = new DataConnection( /* 'optional::firebase-channel' */ );
// check pre-established connections
connection.check('connection-name');
document.getElementById('setup-new-connection').onclick = function() {
connection.setup('connection-name');
};
=
connection.send('longest possible text message');
You may want to share direct messages:
connection.channels['user-id'].send('longest possible text message');
=
connection.send(file);
You may want to share file between two unique users directly:
connection.channels['user-id'].send(file);
Extra events:
// show progress bar!
channel.onFileProgress = function (e) {
// e.userid
// var packets = e.packets;
// packets.remaining
// packets.sent (for sender)
// packets.received (for receiver)
// packets.length
};
// on file successfully sent
channel.onFileSent = function (e) {
// e.userid
// var file = e.file;
// file.name
// file.size
};
// on file successfully received
channel.onFileReceived = function (e) { /* e.fileName, e.userid */ };
=
// error to open data connection
connection.onerror = function(e) {}
// data ports suddenly dropped
connection.onclose = function(e) {}
=
connection.userid = 'username';
=
You can use each and every signaling channel:
- SIP-over-WebSockets
- WebSocket over Node.js/PHP/etc.
- Socket.io over Node.js/etc.
- XMPP/etc.
- XHR-POST-ing
connection.openSignalingChannel = function(callback) {
return io.connect().on('message', callback);
};
If you want to write socket.io over node.js
; here is the server code:
io.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
socket.broadcast.emit('message', data);
});
});
That's it! Isn't it easiest method ever!
Want to use Firebase
for signaling?
// "chat" is your firebase id
connection.firebase = 'chat';
Want to use XHR, WebSockets, SIP, XMPP, etc. for signaling? Read this post.
=
connection.onconnection = function(room) {
var button = document.createElement('button');
button.onclick = function() {
connection.join(room);
};
};
onconnection
is called for each new data connection; and join
method allows you manually join previously created connections.
=
Participants' presence can be detected using onuserleft
:
connection.onuserleft = function(userid) {
console.debug(userid, 'left');
};
=
This DataConnection.js library is compatible to following web-browsers:
Browser | Support |
---|---|
Firefox | Stable / Aurora / Nightly |
Google Chrome | Stable / Canary / Beta / Dev |
Android | Chrome Beta |
=
DataConnection.js is released under MIT licence . Copyright (c) 2013 Muaz Khan.