79 lines
1.9 KiB
Markdown
79 lines
1.9 KiB
Markdown
# bufferutil
|
|
|
|
[![Version npm](https://img.shields.io/npm/v/bufferutil.svg?logo=npm)](https://www.npmjs.com/package/bufferutil)
|
|
[![Linux/macOS/Windows Build](https://img.shields.io/github/workflow/status/websockets/bufferutil/CI/master?label=build&logo=github)](https://github.com/websockets/bufferutil/actions?query=workflow%3ACI+branch%3Amaster)
|
|
|
|
`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`](https://docs.npmjs.com/files/package.json#optionaldependencies)
|
|
key.
|
|
|
|
## API
|
|
|
|
The module exports two functions.
|
|
|
|
### `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
|
|
|
|
```js
|
|
'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
|
|
|
|
```js
|
|
'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
|
|
|
|
[MIT](LICENSE)
|