class WebSocketReader : CoroutineScope
Class that continuously reads a byteChannel and converts into Websocket Frame exposing them in incoming.
maxFrameSize
- maximum frame size that could be read
class FrameTooBigException : Exception, CopyableThrowable<FrameTooBigException>
Raised when the frame is bigger than allowed in a current websocket session |
WebSocketReader(byteChannel: ByteReadChannel, coroutineContext: <ERROR CLASS>, maxFrameSize: Long, pool: ObjectPool<ByteBuffer> = KtorDefaultPool)
Class that continuously reads a byteChannel and converts into Websocket Frame exposing them in incoming. |
val coroutineContext: <ERROR CLASS> |
|
val incoming: ReceiveChannel<Frame>
Channel receiving Websocket's Frame objects read from byteChannel. |
|
var maxFrameSize: Long
maximum frame size that could be read |
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 |