Skip to content

Spy on a running node program by having a man on the inside

Notifications You must be signed in to change notification settings

mafintosh/spies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spies

Spy on a running node program by having a man on the inside

npm install spies

The first thing you need is to setup a spy inside your program

var spies = require('spies');
var net = require('net');

net.createServer(function(socket) {
	var spy = spies();

	spy.on('echo', function() {
		spy.log(Array.prototype.slice.call(arguments));
	});
	spy.on('load-avg', function() {
		spy.log(require('os').loadavg());
	});

	socket.pipe(spy).pipe(socket);
}).listen(9999);

As you can see spy is simply a readable and writable stream so you can pipe to any kind of stream transport (like a websocket)

You can use the spies.listen helper if you just want to listen using a tcp server

spies.listen(9999, function(spy) {
	// attach commands here
});

Afterwards you can use netcat to contact and debrief your spy

nc localhost 9999

This starts a repl where you can type in commands

help
$ : help
  : watch
  : echo
  : load-avg

help and watch are build in commands than print the help and runs the same command every 1 second. You invoke a command simply typing it and pressing enter and the result will be pretty printed below.

load-avg
$ : 0.30126953125
  : 0.3203125
  : 0.33642578125

To pass arguments to the commands simply seperate them them by a space

echo hello
$ : hello

About

Spy on a running node program by having a man on the inside

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published