Skip to content

Repository files navigation

Hello, Dog!

There are libraries out there that record HTTP transactions. There's yakbak and sepia, to name a couple.

This library is different. This library records and logs all communication over sockets, not just sockets used for HTTP transactions.

What happens over sockets, you ask? Let's name a few:

  • HTTP transactions
  • HTTPS transactions
  • FTP transactions
  • WebSockets
  • stdin, stdout, and stderr (this means you can track console.log!)
  • and many more!

Build Status

Quick Start

Patching Socket

When using HelloDog, net.Socket needs to be patched before anything else extends or creates a Socket in order for that to be recorded. Patching can be done by either calling patch() or by assigning track:

// automatically patches when retrieving the track method:const{ track }=require('hellodog');// or more explicitly:require('hellodog').patch();// net Socket can also be unpatched:require('hellodog').unpatch();

Basic usage

const{ track }=require('hellodog');// basic recording of process.stdouttrack((done)=>{console.log('Hello, dog!');console.log('Goodbye, dog!');done();},(err,log)=>{// returns an array of sockets and their messages});// or use it as a Promisetrack((resolve,reject)=>{console.log('I promise!');resolve();}).then((log)=>{});constlog=awaittrack(fnCall);

Response from console.log:

[{events: [{type: 'write',data: 'Hello, dog!\n',created_at: 1489460314753.3242},{type: 'write',data: 'Goodbye, dog!\n',created_at: 1489460314753.4758}],source: 'stdout'}]

More advanced responses

const{ track }=require('hellodog');constexpress=require('express');// recording of an HTTP transactionconstapp=express();app.get('/',(req,res)=>{res.header('Content-length',13);res.write('Hello, world!');res.end();});constserver=app.listen(8888,()=>{track((done)=>{http.get('http://localhost:8888',done);},(err,log)=>{// returns an array of sockets and their messages,// both request and responseserver.close();});});

Response from HTTP transaction:

[{events: [{type: 'connect',created_at: 1489460545610.2593},{type: 'write',data: 'GET / HTTP/1.1\r\nHost: localhost:8888\r\nConnection: close\r\n\r\n',created_at: 1489460545620.1575},{type: 'read',data: 'HTTP/1.1 200 OK\r\nX-Powered-By: Express\r\nContent-length: 13\r\nDate: Tue, 14 Mar 2017 03:02:25 GMT\r\nConnection: close\r\n\r\nHello, world!',created_at: 1489460545628.0654}],connection: {host: 'localhost',port: '8888'},source: 'tcp'}]

Why Dog?

Dogs have both an excellent memory and excellent hearing. We need both.

About

Record and log all communication over sockets

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages