1.0.3 • Published 9 years ago

web-spawn v1.0.3

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

WebSpawn

Installation

$ npm install web-spawn

Features

  • Pipes stdin/stdout/stderr over web socket to allow communication with server process from client.
  • Transmits whitelisted signals to process from client.

Dependencies

Quick Start

Server

var app = require('express').createServer();
var io = require('socket.io')(app);
var webSpawn = require('web-spawn')(io, app);
var SocketSpawn = require('web-spawn').SocketSpawn;

// Can also be attached alternatively, like socket.io
// var webSpawn = require('web-spawn')(io);
// ...
// webSpawn.attach(app);

var cmds = {
    python2: function (socket) {
        var child = SocketSpawn(socket, ['python2', ['-u', '-i']);
    },
    python3: function (socket) {
        var child = SocketSpawn(socket, ['python3', ['-u', '-i']);
    }
};

webSpawn.route('/route', cmds, function(cmd, socket, query) {
    // cmd: fn to be called
    // socket: socket.io instance
    // query: query object sent by WebSpawn client
    
    // ...
    
    cmd(socket);
});

// ...

Client

<script src="/socket.io/socket.io.js"></script>
<script src="/js/EventEmitter.js"></script>
<script src="/web-spawn/web-spawn.js"></script>
<script>
    var cmd = 'python3';
    
    var ws = new WebSpawn({
        ns: '/route',
        query: {
            cmd: cmd
        }
    });
    
    ws.connect();
    
    // same as ws.stdout(fn);
    ws.on('stdout', function(data) {
        console.log("Received output from process: " + data);    
    });
    ws.on('stderr', function(data) {
        console.error("Received error from process: " + data);    
    });
    
    // same as ws.stdin(str);
    ws.emit('stdin', 'a = 5\n');
    ws.emit('stdin', 'a + 10\n');
    
</script>
1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

10 years ago

1.0.0

10 years ago