Frame

sealed expect class Frame

A frame received or ready to be sent. It is not reusable and not thread-safe

Types

Binary

class Binary : Frame

Represents an application level binary frame. In a RAW web socket session a big text frame could be fragmented (separated into several text frames so they have fin = false except the last one). Note that usually there is no need to handle fragments unless you have a RAW web socket session.

Close

class Close : Frame

Represents a low-level level close frame. It could be sent to indicate web socket session end. Usually there is no need to send/handle it unless you have a RAW web socket session.

Ping

class Ping : Frame

Represents a low-level ping frame. Could be sent to test connection (peer should reply with Pong). Usually there is no need to send/handle it unless you have a RAW web socket session.

Pong

class Pong : Frame

Represents a low-level pong frame. Should be sent in reply to a Ping frame. Usually there is no need to send/handle it unless you have a RAW web socket session.

Text

class Text : Frame

Represents an application level text frame. In a RAW web socket session a big text frame could be fragmented (separated into several text frames so they have fin = false except the last one). Please note that a boundary between fragments could be in the middle of multi-byte (unicode) character so don’t apply String constructor to every fragment but use decoder loop instead of concatenate fragments first. Note that usually there is no need to handle fragments unless you have a RAW web socket session.

Properties

buffer

val buffer: ByteBuffer

Frame content

data

val data: ByteArray
  • a frame content or fragment content

disposableHandle

val disposableHandle: DisposableHandle

could be invoked when the frame is processed

fin

val fin: Boolean

is it final fragment, should be always true for control frames and if no fragmentation is used

frameType

val frameType: FrameType

enum value

Functions

copy

fun copy(): Frame

Creates a frame copy

toString

open fun toString(): String

Companion Object Functions

byType

fun byType(
    fin: Boolean,
    frameType: FrameType,
    data: ByteArray
): Frame
fun byType(
    fin: Boolean,
    frameType: FrameType,
    buffer: ByteBuffer
): Frame

Create a particular Frame instance by frame type

Extension Functions

readBytes

fun Frame.readBytes(): ByteArray

Read binary content from a frame. For fragmented frames only returns this fragment.

Inheritors

Binary

class Binary : Frame

Represents an application level binary frame. In a RAW web socket session a big text frame could be fragmented (separated into several text frames so they have fin = false except the last one). Note that usually there is no need to handle fragments unless you have a RAW web socket session.

Close

class Close : Frame

Represents a low-level level close frame. It could be sent to indicate web socket session end. Usually there is no need to send/handle it unless you have a RAW web socket session.

Ping

class Ping : Frame

Represents a low-level ping frame. Could be sent to test connection (peer should reply with Pong). Usually there is no need to send/handle it unless you have a RAW web socket session.

Pong

class Pong : Frame

Represents a low-level pong frame. Should be sent in reply to a Ping frame. Usually there is no need to send/handle it unless you have a RAW web socket session.

Text

class Text : Frame

Represents an application level text frame. In a RAW web socket session a big text frame could be fragmented (separated into several text frames so they have fin = false except the last one). Please note that a boundary between fragments could be in the middle of multi-byte (unicode) character so don’t apply String constructor to every fragment but use decoder loop instead of concatenate fragments first. Note that usually there is no need to handle fragments unless you have a RAW web socket session.