What is bufferutil?
The bufferutil package is a Node.js utility module that provides efficient buffer operations. It is primarily used to enhance the performance of binary data manipulation by providing a native addon for buffer operations which are faster than pure JavaScript implementations.
What are bufferutil's main functionalities?
Masking and unmasking WebSocket frames
This feature allows you to mask and unmask data according to the WebSocket protocol, which is useful for WebSocket frame manipulation.
const bufferUtil = require('bufferutil');
const buffer = Buffer.from('Hello World');
const masked = bufferUtil.mask(buffer, Buffer.from([0x12, 0x34, 0x56, 0x78]));
const unmasked = bufferUtil.unmask(masked, Buffer.from([0x12, 0x34, 0x56, 0x78]));
Buffer concatenation
This feature provides a method to concatenate multiple buffers into a single buffer efficiently.
const bufferUtil = require('bufferutil');
const buffers = [Buffer.from('Hello'), Buffer.from(' '), Buffer.from('World')];
const concatenated = bufferUtil.concat(buffers);
Buffer comparison
This feature allows you to compare two buffers for equality, which is faster than comparing them byte-by-byte in JavaScript.
const bufferUtil = require('bufferutil');
const buffer1 = Buffer.from('Hello');
const buffer2 = Buffer.from('Hello');
const isEqual = bufferUtil.equals(buffer1, buffer2);
Other packages similar to bufferutil
ws
The 'ws' package is a WebSocket client and server implementation for Node.js. It includes a built-in buffer utility for masking and unmasking WebSocket frames, similar to bufferutil, but it is a more comprehensive solution for working with WebSockets.
buffer
The 'buffer' package is a Node.js core module that provides a way to handle binary data. It includes methods for manipulating buffers but does not have the native performance optimizations that bufferutil offers.
buffers
The 'buffers' package provides a way to work with collections of Node.js Buffer objects. It offers buffer manipulation capabilities like concatenation and slicing, but it does not focus on WebSocket frame manipulation or the native performance enhancements found in bufferutil.
bufferutil
Buffer utils is one of the modules that makes ws
fast. It's optimized for
certain buffer based operations such as merging buffers, generating WebSocket
masks and unmasking.
As the module consists of binary components, it should be used an
optionalDependency
so when installation fails, it doesn't halt the
installation of your module. There are fallback files available in this
repository. See fallback.js
for the suggest fallback implementation if
installation fails.
Installation
npm install bufferutil
API
In all examples we assume that you've already required the BufferUtil as
followed:
'use strict';
var bu = require('bufferutil').BufferUtil;
The module exposes 3 different functions:
merge
Merge multiple buffers in the first supplied buffer argument:
bu.merge(buffer, [buffer1, buffer2]);
This merges buffer1 and buffer2 which are in an array into buffer.
mask
Apply a WebSocket mask on the given data.
bu.mask(buffer, mask);
unmask
Remove a WebSocket mask on the given data.;w
bu.unmask(buffer, mask);
License
MIT