node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »



Build Status

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) {

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