WebSocket
interface · requires --allow-net
interface WebSocket extends EventTargetProvides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection.
If you are looking to create a WebSocket server, please take a look at
Ende.upgradeWebSocket().
Example
// Creating a WebSocket connection
const ws = new WebSocket("ws://localhost:8080");
// Setting up event handlers
ws.onopen = (event) => {
console.log("Connected to the server");
ws.send("Hello Server!");
};
ws.onmessage = (event) => {
console.log(`Received: ${event.data}`);
};
ws.onerror = (event) => {
console.error("WebSocket error observed:", event);
};
ws.onclose = (event) => {
console.log(`WebSocket closed: Code=${event.code}, Reason=${event.reason}`);
};
See also
variable
var WebSocket: { … }Constructor interface for creating WebSocket instances.
The WebSocket constructor creates and returns a new WebSocket object
that represents a connection to a WebSocket server.
Example
// Basic WebSocket connection
const ws = new WebSocket("ws://localhost:8080");
// WebSocket with protocol specification
const wsWithProtocol = new WebSocket("ws://localhost:8080", "json");
// WebSocket with multiple protocol options (server will select one)
const wsWithProtocols = new WebSocket("ws://localhost:8080", ["json", "xml"]);
// Using URL object instead of string
const url = new URL("ws://localhost:8080/path");
const wsWithUrl = new WebSocket(url);
// WebSocket with headers
const wsWithProtocols = new WebSocket("ws://localhost:8080", {
headers: {
"Authorization": "Bearer foo",
},
});
See also
Constructors
constructor
new WebSocket(url: string | URL, protocolsOrOptions?: string | string[] | WebSocketOptions): WebSocketProperties
binaryType
binaryType: BinaryTypeReturns 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".
const ws = new WebSocket("ws://localhost:8080");
ws.binaryType = "arraybuffer";
bufferedAmount
readonly bufferedAmount: numberReturns 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.)
const ws = new WebSocket("ws://localhost:8080");
ws.send("Hello, world!");
console.log(ws.bufferedAmount); // 13
extensions
readonly extensions: stringReturns the extensions selected by the server, if any.
WebSocket extensions add optional features negotiated during the handshake via
the Sec-WebSocket-Extensions header.
At the time of writing, there are two registered extensions:
permessage-deflate: Enables per-message compression using DEFLATE.bbf-usp-protocol: Used by the Broadband Forum's User Services Platform (USP).
See the full list at IANA WebSocket Extensions.
Example:
const ws = new WebSocket("ws://localhost:8080");
console.log(ws.extensions); // e.g., "permessage-deflate"
onclose
onclose: ((this: WebSocket, ev: CloseEvent) => any) | nullonerror
onerror: ((this: WebSocket, ev: Event | ErrorEvent) => any) | nullonmessage
onmessage: ((this: WebSocket, ev: MessageEvent) => any) | nullonopen
onopen: ((this: WebSocket, ev: Event) => any) | nullprotocol
readonly protocol: stringReturns 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.
readyState
readonly readyState: numberReturns the state of the WebSocket object's connection. It can have the values described below.
url
readonly url: stringReturns the URL that was used to establish the WebSocket connection.
CLOSED
readonly CLOSED: numberreadonly CLOSED: numberCLOSING
readonly CLOSING: numberreadonly CLOSING: numberCONNECTING
readonly CONNECTING: numberreadonly CONNECTING: numberOPEN
readonly OPEN: numberreadonly OPEN: numberprototype
readonly prototype: WebSocketMethods
close
close(code?: number, reason?: string): voidCloses the WebSocket connection, optionally using code as the WebSocket connection close code and reason as the WebSocket connection close reason.
send
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): voidTransmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView.
addEventListener
addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | AddEventListenerOptions): voidaddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): voidremoveEventListener
removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): voidremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void