Used to easily parse variable-size frame data coming from sockets. It allows a customizable frame length reader if the default isn't acceptable (buf.readInt32BE()).
To use it, set it as your 'data' event listener. When a full frame is found, the FrameBuffer will emit a "frame" event which can be listened to to get the full frame without the frame size header:
var FramingBuffer = require('framing-buffer'),
framing_buffer = new FramingBuffer();
framing_buffer.on('frame', function(frame) {
// got my full frame!
});
my_socket.on('data', function(data) {
framing_buffer.push(data);
});
If a custom frame length is required, you can provide the frame length field size and frame length reader function as parameters to the constructor:
// Example of using an unsigned short for the frame length field
var options = {
frame_length_size: 2,
frame_length_reader: function(offset_buffer) {
return offset_buffer.readUInt16BE();
}
};
var framing_buffer = new FramingBuffer(options);
Note that an OffsetBuffer is passed into the frame_length_reader function.
The FramingBuffer keeps track of only one data stream. Keep an instance of this per steam that needs framing (i.e. one per socket / connection).
npm install framing-buffer
npm test
MIT License