class WebSocketWriter : CoroutineScope
Class that processes written outgoing Websocket Frame, serializes them and writes the bits into the writeChannel.
WebSocketWriter(writeChannel: ByteWriteChannel, coroutineContext: <ERROR CLASS>, masking: Boolean = false, pool: ObjectPool<ByteBuffer> = KtorDefaultPool)
Class that processes written outgoing Websocket Frame, serializes them and writes the bits into the writeChannel. |
val coroutineContext: <ERROR CLASS> |
|
var masking: Boolean
: whether it will mask serialized frames. |
|
val outgoing: SendChannel<Frame>
Channel for sending Websocket's Frame that will be serialized and written to writeChannel. |
|
val pool: ObjectPool<ByteBuffer>
: ByteBuffer pool to be used by this writer |
fun
Closes the message queue |
|
suspend fun flush(): Unit
Ensures all enqueued messages has been written |
|
suspend fun send(frame: Frame): Unit
Send a frame and write it and all outstanding frames in the queue |
fun CoroutineScope. fun CoroutineScope.decodeChunked(input: ByteReadChannel, contentLength: Long): DecoderJob
Start a chunked stream decoder coroutine |
|
fun CoroutineScope.parseMultipart(input: ByteReadChannel, headers: HttpHeadersMap): ReceiveChannel<MultipartEvent> fun CoroutineScope.parseMultipart(input: ByteReadChannel, contentType: CharSequence, contentLength: Long?): ReceiveChannel<MultipartEvent> fun CoroutineScope.
Starts a multipart parser coroutine producing multipart events |
|
fun CoroutineScope.pinger(outgoing: SendChannel<Frame>, periodMillis: Long, timeoutMillis: Long, pool: ObjectPool<ByteBuffer> = KtorDefaultPool): SendChannel<Pong>
Launch pinger coroutine on CoroutineScope that is sending ping every specified periodMillis to outgoing channel, waiting for and verifying client's pong frames. It is also handling timeoutMillis and sending timeout close frame |
|
fun CoroutineScope.ponger(outgoing: SendChannel<Pong>, pool: ObjectPool<ByteBuffer> = KtorDefaultPool): SendChannel<Ping>
Launch a ponger actor job on the CoroutineScope sending pongs to outgoing channel. It is acting for every client's ping frame and replying with corresponding pong |
|
fun CoroutineScope.
Start connection HTTP pipeline invoking handler for every request. Note that handler could be invoked multiple times concurrently due to HTTP pipeline nature |
|
fun CoroutineScope.startServerConnectionPipeline(connection: ServerIncomingConnection, timeout: WeakTimeoutQueue, handler: HttpRequestHandler): Job
Start connection HTTP pipeline invoking handler for every request. Note that handler could be invoked multiple times concurrently due to HTTP pipeline nature |