Client - Server Network
P2P Network
WebTorrent
P2P in the browser!
Electron App Architecture
Browser
Renderer
Modules
test-app/
├── package.json
├── main.js
├── mystyles.css
└── index.html
const electron = require('electron')
const app = electron.app
const fs = require('fs')
const myFile = require('./myFile.txt')
const BrowserWindow = electron.BrowserWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: { nodeenabled: false }
})
mainWindow.loadURL('file://' + __dirname + '/index.html')
}
app.on('ready', createWindow)
$ electron myapp/
Main Process
Render process 1
Render process 2
How WebFlight
uses Electron
(Electron Shell)
<!---original tag --->
<img id='large-image' src='/assets/media/img/bird1.jpg'>
<!---torrented tag --->
<img id='large-image' class='23897389asdfjkl9845'>
client.seed('/assets/media/img/bird1.jpg', function(torrent) {
console.log('now seeding ', torrent.files[0].name)
})
client.seed('/assets/media/mov/birds-flying.mp4', function(torrent) {
console.log('now seeding ', torrent.files[0].name)
})
const electron = require('electron-spawn')
const spawn = electron('/path/to/seedScript', {detached: true})
spawn.sdterr.on('error', (err) => {
console.err('error spawning ', err.toString())
})
spawn.stdout.on('data', (data) => {
console.log('seeding files ', data.toString())
})
with no sandbox!
Jared Fowler
@jared_fowler
@10000highfives
webflight.io
Thank you