mirror of
https://github.com/hanzoai/bufferutil.git
synced 2026-09-24 16:57:30 +00:00
8d9dafecfe8bac11f9cf69c665f4c658b8851f94
github.com has no runner for hanzo-build-linux-amd64, so a caller under .github/workflows is a gate that can never be scheduled. This is the ~7-line caller on the plane that can (git.hanzo.ai git-runner fleet), pinned @v1. Co-authored-by: Hanzo Dev <[email protected]>
bufferutil
bufferutil is what makes ws fast. It provides some utilities to efficiently
perform some operations such as masking and unmasking the data payload of
WebSocket frames.
Installation
npm install bufferutil --save-optional
The --save-optional flag tells npm to save the package in your package.json
under the
optionalDependencies
key.
API
The module exports two functions. To maximize performance, parameters are not validated. It is the caller's responsibility to ensure that they are correct.
bufferUtil.mask(source, mask, output, offset, length)
Masks a buffer using the given masking-key as specified by the WebSocket protocol.
Arguments
source- The buffer to mask.mask- A buffer representing the masking-key.output- The buffer where to store the result.offset- The offset at which to start writing.length- The number of bytes to mask.
Example
'use strict';
const bufferUtil = require('bufferutil');
const crypto = require('crypto');
const source = crypto.randomBytes(10);
const mask = crypto.randomBytes(4);
bufferUtil.mask(source, mask, source, 0, source.length);
bufferUtil.unmask(buffer, mask)
Unmasks a buffer using the given masking-key as specified by the WebSocket protocol.
Arguments
buffer- The buffer to unmask.mask- A buffer representing the masking-key.
Example
'use strict';
const bufferUtil = require('bufferutil');
const crypto = require('crypto');
const buffer = crypto.randomBytes(10);
const mask = crypto.randomBytes(4);
bufferUtil.unmask(buffer, mask);
License
Languages
C
49.2%
JavaScript
46.2%
Python
4.6%