split-by-header

Split binary streams by length fields in messages' headers

split-by-header

Split binary streams by length fields in messages' headers.

Use this for example to parse streaming data without writing a streaming parser if your chunks are reasonably small.

var split = require('split-by-header')
 
binaryStream
  .pipe(split({ type : 'UInt24BE', offset : 1 }))
  .pipe(process.stdout)

cfg can be an object with those fields:

  • type: Type of the length value. Supported are {8,16,24,32} bit (un)signed integers in BE & LE. See node api
  • offset: Position to start reading from (optional)
  • modifier: the real length is returned by the modifier (optional)

If cfg is a string, it sets cfg.type:

split('UInt24BE')

(MIT)