The child process as prelude to interprocess communication
What the hell are you talking about??
Not EMScripten, not any R&D cool finding, just some observation of using the Electron app pattern.
Electron is a cross-platform framework that glues system and browser via interprocess communications; and developed by Github (major thanks!).
(Oh yeah, it uses Javascript.. That is pretty cool.)
EE: Electron boiler, meet Express boiler
'use strict';
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const url = 'http://127.0.0.1:1987';
let mainWindow, child;
function windowRouter(_route) {
return url + '/' + (_route || '');
}
function renderWindow() {
mainWindow = new BrowserWindow({width: 800, height: 600});
mainWindow.loadURL(windowRouter());
// default to inspector mode in Chromium
mainWindow.webContents.openDevTools();
mainWindow.on('closed', function() {
mainWindow = null;
});
}
function createWindow () {
renderWindow();
let exec = require('child_process').exec;
child = exec('node ./server.js');
child.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
child.on('close', function(code) {
console.log('closing code: ' + code);
child.kill();
});
}
app.on('ready', createWindow);
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') {
app.quit();
child.kill();
}
});
app.on('activate', function () {
if (mainWindow === null) {
createWindow();
}
});
main.js#!/usr/bin/env node
var express = require('express');
var app = module.exports = express();
var server = require('http').createServer(app);
var bodyParser = require('body-parser');
app.set('trust proxy', true);
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(require('cookie-parser')());
app.get('/', function(req, res) {
console.log('GET /');
res.send('<h1>foo lala</h1>');
})
var port = 1987;
var ipaddr = '127.0.0.1';
server.listen(port, ipaddr, function() {
console.log('Express server listening on port ' + server.address().port + ' at ' + server.address().address);
});
server.jsnpm start > electron-quick-start@1.0.0 start /var/www/electron-quick-start > electron main.js stdout: Express server listening on port 1987 at 127.0.0.1 stdout: GET /terminal
browser
The JS above was near identical, and the HTML was identical, to Electron's boilerplate, and package.json required modifying the additional packages. It's a good place to start!

No comments:
Post a Comment