viewer haengt am metaloi:2223 http://service.wolfspool.chickenkiller.com/static.html
das 'helo' datenpaket .. ist gestaltungsraum
viewer haengt am metaloi:2223 http://service.wolfspool.chickenkiller.com/static.html
das 'helo' datenpaket .. ist gestaltungsraum
// textradio client: c_stream | |
// | |
// unix invocation sample: | |
// set FLG_DISCONN to 1 or finish with Ctrl-c | |
// set WAIT_DISCONN to milliseconds | |
// set SERVER to backbone server | |
// set SERVER_PORT to backbone server port | |
// | |
// bash | node c_stream | |
// | |
// bash | SERVER=code-wolfhesse.c9.io SERVER_PORT=8080 node c_stream | |
// | |
// bash | SERVER=metaloi.wolfspool.chickenkiller.com SERVER_PORT=2223 node c_stream | |
// | |
// ls | FLG_DISCONN=1 node c_stream | |
// | |
var server_host = process.env.SERVER || 'metaloi.wolfspool.chickenkiller.com'; | |
var server_port = process.env.SERVER_PORT || 2223; | |
var flg_disconn = process.env.FLG_DISCONN || 0; | |
//console.log('flg_disconn is ' + flg_disconn); | |
var wait_disconn = process.env.WAIT_DISCONN || 2000; | |
var server_address = 'http://' + server_host + ':' + server_port + '/'; | |
//console.log('server_address is ' + server_address); | |
var id = Math.random(); | |
var cyberport = 42; | |
var protocol = 'backbone-direct'; | |
var application = 'c_stream'; | |
var socket = require('socket.io-client')(server_address); | |
var Writable = require('stream').Writable; | |
var BackboneStream = new Writable(); | |
BackboneStream._write = function(chunk, env, next) { | |
var message_chunk = chunk.toString("utf8"); | |
socket.emit('helo', { client: id, | |
date: new Date, | |
application: application, | |
cyberport: cyberport, | |
protocol: protocol, | |
verb: 'chunk', | |
chunk: message_chunk}); | |
if(1 == flg_disconn){ | |
setTimeout(function(){ | |
// console.log('disconnecting'); | |
socket.disconnect(); | |
process.exit(0);}, wait_disconn); | |
} | |
next(); | |
}; | |
socket.on('connect', function () { | |
// console.log('client: connect ' + id); | |
// reconnect scenario: do not register event handlers multiple times.. | |
}); | |
socket.on('tick', function (data) { | |
// console.log('client:' + id + ' tick ' + data); | |
}); | |
socket.on('data', function (data) { | |
// console.log('client:' + id + ' data ' + JSON.stringify(data)); | |
}); | |
socket.on('event', function (data) { | |
// console.log('client:' + id + ' event ' + JSON.stringify(data)); | |
}); | |
socket.on('disconnect', function () { | |
// console.log('client: disconnect'); | |
}); | |
process.stdin.pipe(BackboneStream); | |
process.stdin.pipe(process.stdout); | |
# republish on cyberport:42 | |
node c_env | grep data | grep -v c_stream | jq --unbuffered . | node c_stream.js | |
# read, grep for c_stream app, extract replicated data | |
node c_env.js | grep c_stream | jq --unbuffered ' .data|."backbone:server:data"|.chunk|fromjson ' | tee sample.res.json |
{ | |
"name": "textradio-rogera-01", | |
"version": "0.0.0", | |
"description": "A simple streaming server using socket.io", | |
"main": "index.js", | |
"author": "@wolfhesse", | |
"private": true, | |
"license": "BSD", | |
"dependencies": { | |
"socket.io-client": "~1.3.7", | |
"socket.io": "~1.3.7" | |
} | |
} | |