socket-recorder
v1.1.0
Published
Record and log all socket transactions that occur for a specific period of time
Downloads
8
Readme
socket-recorder
Record and log all communication over sockets.
Patching Socket
When using SocketRecorder, 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 record
:
require('socket-recorder').patch();
// automatically patches when retrieving the record method:
const { record } = require('socket-recorder');
// net Socket can also be unpatched:
require('socket-recorder').unpatch();
Basic usage
const { record } = require('socket-recorder');
// basic recording of process.stdout
record((done) => {
console.log('Hello, world!');
console.log('Goodbye, world!');
done();
}, (log) => {
// returns an array of sockets and their messages
});
// or use it as a Promise
record((resolve, reject) => {
console.log('I promise!');
resolve();
}).then((log) => {
});
Response from console.log
:
[
{
events: [
{ request: 'Hello, world!\n', created_at: 1489460314753.3242 },
{ request: 'Goodbye, world!\n', created_at: 1489460314753.4758 }
],
source: 'stdout'
}
]
More advanced responses
const { record } = require('socket-recorder');
const express = require('express');
// recording of an HTTP transaction
const app = express();
app.get('/', (req, res) => {
res.header('Content-length', 13);
res.write('Hello, world!');
res.end();
});
const server = app.listen(8888, () => {
record((done) => {
http.get('http://localhost:8888', done);
}, (log) => {
// returns an array of sockets and their messages,
// both request and response
server.close();
});
});
Response from HTTP transaction:
[
{
events: [
{
request: 'GET / HTTP/1.1\r\nHost: localhost:8888\r\nConnection: close\r\n\r\n',
created_at: 1489460545620.1575
},
{
response: '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'
}
]