coderef

WebSocketsBaseline · Widely available

The WebSocket API opens a two-way communication channel between the user's browser and a server.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 29, 2015. Widely available since Jan 29, 2018.

Browser support

DesktopChrome
1–4Not supported
5+Supportedsince May 25, 2010
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–10Not supported
11+Supportedsince Mar 13, 2012
Current: 157
Safari
1–4Not supported
5+Supportedsince Jun 7, 2010
Current: 27
MobileChrome Android
18+Supportedsince Jun 27, 2012
Current: 155
Firefox Android
4–10Not supported
14+Supportedsince Jun 26, 2012
Current: 157
Safari iOS
1–4Not supported
4.2+Supportedsince Nov 22, 2010
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

JS
const socket = new WebSocket("wss://example.com/chat");

socket.addEventListener("open", () => socket.send(JSON.stringify({ hello: "world" })));
socket.addEventListener("message", (event) => console.log(JSON.parse(event.data)));
socket.addEventListener("close", () => console.log("disconnected"));

Feature detection

JS · check before using
if ("WebSocket" in globalThis) {
  // WebSocket is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (31). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
CloseEvent1512861886
CloseEvent.CloseEvent161411618146
CloseEvent.code1512861886
CloseEvent.reason1512861886
CloseEvent.wasClean1512861886
WebSocket51211518144.2
WebSocket.WebSocket51211518144.2
WebSocket.WebSocket.url_parameter_http_https_relative12512512417.312512417.3
WebSocket.binaryType151211618146
WebSocket.bufferedAmount51211518144.2
WebSocket.close51211518144.2
WebSocket.close_event51211518144.2
WebSocket.error_event51211518144.2
WebSocket.extensions161211618146
WebSocket.message_event51211518144.2
WebSocket.open_event51211518144.2
WebSocket.protocol151211618146
WebSocket.protocol_rfc_6455161211618146
WebSocket.readyState51211518144.2
WebSocket.send51211518144.2
Show 11 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
WebSocket.url181211618146
WebSocket.worker_support51237518375
WebSocketError124124✕✕124✕✕
WebSocketError.WebSocketError124124✕✕124✕✕
WebSocketError.closeCode124124✕✕124✕✕
WebSocketError.reason124124✕✕124✕✕
http.headers.Sec-WebSocket-Accept161211618146
http.headers.Sec-WebSocket-Extensions161211618146
http.headers.Sec-WebSocket-Key161211618146
http.headers.Sec-WebSocket-Protocol161211618146
http.headers.Sec-WebSocket-Version161211618146