ktor-http-cio / io.ktor.http.cio.websocket / WebSocketDeflateExtension

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

val factory: WebSocketExtensionFactory<Config, out WebSocketExtension<Config>>

Reference to the WebSocketExtensionFactory, which produced this extension.

protocols

val protocols: List<WebSocketExtensionHeader>

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

val key: AttributeKey<WebSocketDeflateExtension>

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.