source: code/trunk/vendor/nhooyr.io/websocket/compress.go@ 822

Last change on this file since 822 was 822, checked in by yakumo.izuru, 22 months ago

Prefer immortal.run over runit and rc.d, use vendored modules
for convenience.

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 1.8 KB
RevLine 
[822]1package websocket
2
3// CompressionMode represents the modes available to the deflate extension.
4// See https://tools.ietf.org/html/rfc7692
5//
6// A compatibility layer is implemented for the older deflate-frame extension used
7// by safari. See https://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-06
8// It will work the same in every way except that we cannot signal to the peer we
9// want to use no context takeover on our side, we can only signal that they should.
10// It is however currently disabled due to Safari bugs. See https://github.com/nhooyr/websocket/issues/218
11type CompressionMode int
12
13const (
14 // CompressionNoContextTakeover grabs a new flate.Reader and flate.Writer as needed
15 // for every message. This applies to both server and client side.
16 //
17 // This means less efficient compression as the sliding window from previous messages
18 // will not be used but the memory overhead will be lower if the connections
19 // are long lived and seldom used.
20 //
21 // The message will only be compressed if greater than 512 bytes.
22 CompressionNoContextTakeover CompressionMode = iota
23
24 // CompressionContextTakeover uses a flate.Reader and flate.Writer per connection.
25 // This enables reusing the sliding window from previous messages.
26 // As most WebSocket protocols are repetitive, this can be very efficient.
27 // It carries an overhead of 8 kB for every connection compared to CompressionNoContextTakeover.
28 //
29 // If the peer negotiates NoContextTakeover on the client or server side, it will be
30 // used instead as this is required by the RFC.
31 CompressionContextTakeover
32
33 // CompressionDisabled disables the deflate extension.
34 //
35 // Use this if you are using a predominantly binary protocol with very
36 // little duplication in between messages or CPU and memory are more
37 // important than bandwidth.
38 CompressionDisabled
39)
Note: See TracBrowser for help on using the repository browser.