diff --git a/README.md b/README.md index 9c5709a..32c6b43 100644 --- a/README.md +++ b/README.md @@ -27,24 +27,46 @@ The extension can be configured, for example: ```js var Extensions = require('websocket-extensions'), - deflate = require('permessage-deflate'); + deflate = require('permessage-deflate'), + zlib = require('zlib'); -deflate = deflate.configure({noContextTakeover: true}); +deflate = deflate.configure({ + level: zlib.Z_BEST_COMPRESSION, + maxWindowBits: 13 +}); var exts = new Extensions(); exts.add(deflate); ``` -Supported options are: +The set of available options can be split into two sets: those that control the +session's compressor for outgoing messages and do not need to be communicated to +the peer, and those that are negoatiated as part of the protocol. The settings +only affecting the compressor are described fully in the [zlib +documentation](http://nodejs.org/api/zlib.html#zlib_options): + +* `level`: sets the compression level, can be an integer from `0` to `9`, or one + of the contants `zlib.Z_NO_COMPRESSION`, `zlib.Z_BEST_SPEED`, + `zlib.Z_BEST_COMPRESSION`, or `zlib.Z_DEFAULT_COMPRESSION` +* `memLevel`: sets how much memory the compressor allocates, can be an integer + from `1` to `9`, or one of the constants `zlib.Z_MIN_MEMLEVEL`, + `zlib.Z_MAX_MEMLEVEL`, or `zlib.Z_DEFAULT_MEMLEVEL` +* `strategy`: can be one of the constants `zlib.Z_FILTERED`, + `zlib.Z_HUFFMAN_ONLY`, `zlib.Z_RLE`, `zlib.Z_FIXED`, or + `zlib.Z_DEFAULT_STRATEGY` + +The other options relate to settings that are negotiated via the protocol and +can be used to set the local session's behaviour and control that of the peer: * `noContextTakeover`: if `true`, stops the session reusing a deflate context between messages * `requestNoContextTakeover`: if `true`, makes the session tell the other peer not to reuse a deflate context between messages -* `maxWindowBits`: an integer from `8` to `15` inclusive that sets the size of - the session's sliding window +* `maxWindowBits`: an integer from `8` to `15` inclusive that sets the maximum + size of the session's sliding window; a lower window size will be used if + requested by the peer * `requestMaxWindowBits`: an integer from `8` to `15` inclusive to ask the other - peer to use to set its sliding window size, if supported + peer to use to set its maximum sliding window size, if supported ## License