DefaultWebSocketSessionImpl
class DefaultWebSocketSessionImpl :
DefaultWebSocketSession,
WebSocketSession
Default web socket session implementation that handles ping-pongs, close sequence and frame fragmentation
Constructors
DefaultWebSocketSessionImpl( Default web socket session implementation that handles ping-pongs, close sequence and frame fragmentation |
Properties
val closeReason: Deferred<CloseReason?> A close reason for this session. It could be |
|
val coroutineContext: <ERROR CLASS> |
|
val incoming: ReceiveChannel<Frame> Incoming frames channel |
|
var masking: Boolean Enable or disable masking output messages by a random xor mask. Please note that changing this flag on the fly could be applied to the messages already sent (enqueued earlier) as the sending pipeline works asynchronously |
|
var maxFrameSize: Long Specifies frame size limit. Connection will be closed if violated |
|
val outgoing: SendChannel<Frame> Outgoing frames channel. It could have limited capacity so sending too much frames may lead to suspension at corresponding send invocations. It also may suspend if a peer doesn’t read frames for some reason. |
|
var pingIntervalMillis: Long Ping interval or |
|
var timeoutMillis: Long A timeout to wait for pong reply to ping otherwise the session will be terminated immediately.
It doesn’t have any effect if pingIntervalMillis is |
Functions
suspend fun flush(): Unit Flush all outstanding messages and suspend until all earlier sent messages will be written. Could be called at any time even after close. May return immediately if the connection is already terminated. However it may also fail with an exception (or cancellation) at any point due to session failure. Please note that flush doesn’t guarantee that frames were actually delivered. |
|
Close session with GOING_AWAY reason |
|
fun Initiate connection termination immediately. Termination may complete asynchronously. |
Extension Functions
suspend fun WebSocketSession.close( Send a close frame with the specified reason. May suspend if outgoing channel is full. The specified reason could be ignored if there was already close frame sent (for example in reply to a peer close frame). It also may do nothing when a session or an outgoing channel is already closed due to any reason. suspend fun WebSocketSession. Closes with reason depending on cause or normally if cause is |
|
suspend fun WebSocketSession.closeExceptionally( Closes session with normal or error close reason, depending on whether cause is cancellation or not. |
|
fun CoroutineScope. fun CoroutineScope.decodeChunked( Start a chunked stream decoder coroutine |
|
fun <TEngine : ApplicationEngine, TConfiguration : Configuration> CoroutineScope.embeddedServer( Creates an embedded server with the given factory, listening on host:port |
|
fun CoroutineScope.httpServer( Start an http server with settings invoking handler for every request |
|
fun CoroutineScope. Start an http server with settings invoking handler for every request |
|
fun CoroutineScope.mapEngineExceptions( Returns ByteReadChannel with ByteChannel.close handler that returns SocketTimeoutException instead of SocketTimeoutException. fun CoroutineScope.mapEngineExceptions( Returns ByteWriteChannel with ByteChannel.close handler that returns SocketTimeoutException instead of SocketTimeoutException. |
|
fun CoroutineScope.parseMultipart( fun CoroutineScope.parseMultipart( fun CoroutineScope.parseMultipart( Starts a multipart parser coroutine producing multipart events |
|
fun CoroutineScope.pinger( Launch pinger coroutine on CoroutineScope that is sending ping every specified period to outgoing channel, waiting for and verifying client’s pong frames. It is also handling timeout and sending timeout close frame fun CoroutineScope.pinger( 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.pinger( Launch pinger coroutine on CoroutineScope that is sending ping every specified period to outgoing channel, waiting for and verifying client’s pong frames. It is also handling timeout and sending timeout close frame |
|
fun CoroutineScope.ponger( 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.reader( fun CoroutineScope.reader( |
|
suspend fun DefaultWebSocketSession.run( |
|
suspend fun WebSocketSession.send(content: String): Unit Enqueues a text frame for sending with the specified content. suspend fun WebSocketSession.send(content: ByteArray): Unit Enqueues a final binary frame for sending with the specified content. |
|
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( 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.writeMultipleRanges( Start multirange response writer coroutine |
|
fun CoroutineScope.writer( fun CoroutineScope.writer( |