WebRTC Group File Sharing using RTCDataChannel APIs! & WebSync as Signaling GateWay!
© 2013 Muaz Khan<@muazkh> » @WebRTC Experiments » Google+ » What's New?
A file-hangout experiment where all participants can share files in a group!
|
|
|
Private file-hangout ?? /file-hangout/#123456789
|
You can try SCTP based WebRTC File Sharing Demo!
How to use WebSync for Signaling?
// ------------------------------------------------------------------
// start-using WebSync for signaling
var channels = {};
var username = Math.round(Math.random() * 60535) + 5000;
var client = new fm.websync.client('websync.ashx');
client.setAutoDisconnect({
synchronous: true
});
client.connect({
onSuccess: function () {
client.join({
channel: '/chat',
userId: username,
userNickname: username,
onReceive: function (event) {
var message = JSON.parse(event.getData().text);
if (channels[message.channel] && channels[message.channel].onmessage) {
channels[message.channel].onmessage(message.message);
}
}
});
}
});
function openSocket(config) {
var channel = config.channel || 'video-conferencing';
channels[channel] = config;
if (config.onopen) setTimeout(config.onopen, 1000);
return {
send: function (message) {
client.publish({
channel: '/chat',
data: {
username: username,
text: JSON.stringify({
message: message,
channel: channel
})
}
});
}
};
}
// end-using WebSync for signaling
// ------------------------------------------------------------------
var config = {
openSocket: openSocket,
onRemoteStream: function() {},
onRoomFound: function() {}
};
How file-sharing experiment works?
- Multi-peers for group data connectivity
- Multip-sockets for group offer/answer exchange
- Multi SCTP/RTP data ports on single chrome/firefox instance
- Custom file sharing implementation for chrome
- In reality, it is peer-to-peer-to-peers....
Interested to learn how to share files using RTCDataChannel APIs?
Suggestions
- If you're newcomer, newbie or beginner; you're suggested to try RTCMultiConnection.js or DataChannel.js libraries.