viraljs
Version:
P2P distributed application made easy
50 lines (38 loc) • 1.8 kB
JavaScript
var transportCreationTemplate = require('./transport-creation-template.js');
module.exports = function (p2pScriptContent, ioScriptContent) {
return `${transportCreationTemplate()}
var headData = document.head.innerHTML;
var bodyData = document.body.innerHTML;
var metaData = '';
window.ViralContainer.p2p = window.ViralContainer.p2p || new P2P(window.ViralContainer.socket, opts);
window.ViralContainer.p2p.useSockets = false;
window.ViralContainer.p2p.upgrade();
function sendData(data, name) {
var chunkLength = 16000;
var chunksNumber = Math.ceil(data.length / chunkLength);
for (var i = 0; i < chunksNumber; i++) {
var chunkStart = i * chunkLength;
var chunkEnd = Math.min((i + 1) * chunkLength, data.length);
var chunk = data.substring(chunkStart, chunkEnd);
window.ViralContainer.p2p.emit(name, chunk);
}
window.ViralContainer.p2p.emit(name, 'end');
}
window.ViralContainer.p2p.on('getApp', function(data){
if (data === window.ViralContainer.socket.id) {
console.log('Sending app');
sendData(metaData + headData, 'head');
sendData(bodyData, 'body');
}
});
window.onbeforeunload = function(){
window.ViralContainer.socket.disconnect();
};
window.ViralContainer.writeMeta = function (metaObject) {
var metaString = JSON.stringify(metaObject);
metaData = '<script>window.ViralContainer = typeof window.ViralContainer !== "undefined" ? window.ViralContainer : {};window.ViralContainer.meta = ' + metaString + ';<//script>';
metaData = metaData.replace(new RegExp('//', 'g'), '/');
};
window.ViralContainer.socket.emit('readyToSeed');
</script>`;
};