All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.websockets.WebSocket.kt Maven / Gradle / Ivy

package websockets

import js.buffer.ArrayBuffer
import js.buffer.ArrayBufferView
import js.core.ReadonlyArray
import web.buffer.Blob
import web.events.Event
import web.events.EventTarget
import web.messaging.MessageEvent
import web.url.URL

external class WebSocket : EventTarget {
    constructor(
        url: String,
        protocol: String = definedExternally,
    )

    constructor(
        url: String,
        protocols: ReadonlyArray,
    )

    constructor(
        url: URL,
        protocol: String = definedExternally,
    )

    constructor(
        url: URL,
        protocols: ReadonlyArray,
    )

    /**
     * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:
     *
     * Can be set, to change how binary data is returned. The default is "blob".
     */
    var binaryType: BinaryType

    /**
     * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network.
     *
     * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.)
     */
    val bufferedAmount: Number

    /** Returns the extensions selected by the server, if any. */
    val extensions: String
    var onclose: ((event: CloseEvent) -> Unit)?
    var onerror: ((event: Event) -> Unit)?
    var onmessage: ((event: MessageEvent<*>) -> Unit)?
    var onopen: ((event: Event) -> Unit)?

    /** Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. */
    val protocol: String

    /** Returns the state of the WebSocket object's connection. It can have the values described below. */
    val readyState: ReadyState

    /** Returns the URL that was used to establish the WebSocket connection. */
    val url: String

    /** Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. */
    fun close(
        code: Short = definedExternally,
        reason: String = definedExternally,
    )

    /** Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. */
    fun send(data: String)
    fun send(data: Blob)
    fun send(data: ArrayBuffer)
    fun send(data: ArrayBufferView)

    sealed interface ReadyState

    companion object {
        val CLOSED: ReadyState
        val CLOSING: ReadyState
        val CONNECTING: ReadyState
        val OPEN: ReadyState
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy