WebSocketDeflateExtension

class WebSocketDeflateExtension : WebSocketExtension<Config>

Compress and decompress WebSocket frames to reduce amount of transferred bytes.

Usage

install(WebSockets) {
    extensions {
        install(WebSocketDeflateExtension)
    }
}

Implements WebSocket deflate extension from RFC-7692. This implementation is using window size = 15 due to limitations of Deflater implementation.

Types

Companion

companion object Companion : 
    WebSocketExtensionFactory<Config, WebSocketDeflateExtension>

Config

class Config

WebSocket deflate extension configuration.

Properties

factory

Reference to the WebSocketExtensionFactory, which produced this extension.

protocols

List of WebSocket extension protocols which will be sent by client in headers. They are required to inform server that client wants to negotiate current extension.

Functions

clientNegotiation

fun clientNegotiation(
    negotiatedProtocols: List<WebSocketExtensionHeader>
): Boolean

This method is called only for a client, when it receives the WebSocket upgrade response.

processIncomingFrame

fun processIncomingFrame(frame: Frame): Frame

This method is called on each incoming frame before handling it in WebSocket session.

processOutgoingFrame

fun processOutgoingFrame(frame: Frame): Frame

This method is called on each outgoing frame and handle it before sending.

serverNegotiation

fun serverNegotiation(
    requestedProtocols: List<WebSocketExtensionHeader>
): List<WebSocketExtensionHeader>

This method is called only for a server, when it receives websocket session.

Companion Object Properties

key

Key is used to locate extension.

rsv1

val rsv1: Boolean

First extension bit used by current extension.

rsv2

val rsv2: Boolean

Second extension bit used by current extension.

rsv3

val rsv3: Boolean

Third extension bit used by current extension.

Companion Object Functions

install

fun install(
    config: Config.() -> Unit
): WebSocketDeflateExtension

Create extension instance using config block. The extension instance is created for each WebSocket request.