The WebSocket object provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection.
To construct a WebSocket, use the WebSocket() constructor.
Constructor
WebSocket(url[, protocols])- Returns a newly created
WebSocketobject.
Constants
| Constant | Value |
WebSocket.CONNECTING |
0 |
WebSocket.OPEN |
1 |
WebSocket.CLOSING |
2 |
WebSocket.CLOSED |
3 |
Properties
WebSocket.binaryType- The binary data type used by the connection.
WebSocket.bufferedAmountRead only- The number of bytes of queued data.
WebSocket.extensionsRead only- The extensions selected by the server.
WebSocket.onclose- An event listener to be called when the connection is closed.
WebSocket.onerror- An event listener to be called when an error occurs.
WebSocket.onmessage- An event listener to be called when a message is received from the server.
WebSocket.onopen- An event listener to be called when the connection is opened.
WebSocket.protocolRead only- The sub-protocol selected by the server.
WebSocket.readyStateRead only- The current state of the connection.
WebSocket.urlRead only- The absolute URL of the WebSocket.
Methods
WebSocket.close([code[, reason]])- Closes the connection.
WebSocket.send(data)- Enqueues data to be transmitted.
Events
Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.
close- Fired when a connection with a
WebSocketis closed.
Also available via theoncloseproperty error- Fired when a connection with a
WebSockethas been closed because of an error, such as when some data couldn't be sent.
Also available via theonerrorproperty. message- Fired when data is received through a
WebSocket.
Also available via theonmessageproperty. open- Fired when a connection with a
WebSocketis opened.
Also available via theonopenproperty.
Examples
// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');
// Connection opened
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});
// Listen for messages
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
Specifications
| Specification | Status |
|---|---|
| HTML Living Standard The definition of 'WebSocket' in that specification. |
Living Standard |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
WebSocket | Chrome Full support 4 | Edge Full support 12 | Firefox
Full support
11
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 5 | WebView Android Full support ≤37 | Chrome Android Full support 18 | Firefox Android
Full support
14
| Opera Android Full support 12.1 | Safari iOS Full support 4.2 | Samsung Internet Android Full support 1.0 |
WebSocket() constructor | Chrome Full support Yes | Edge Full support ≤79 | Firefox
Full support
7
| IE ? | Opera Full support Yes | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support 7 | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
binaryType | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
bufferedAmount | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
close | Chrome Full support 4 | Edge Full support 12 | Firefox
Full support
8
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 5 | WebView Android Full support ≤37 | Chrome Android Full support 18 | Firefox Android
Full support
8
| Opera Android Full support 12.1 | Safari iOS Full support 4.2 | Samsung Internet Android Full support 1.0 |
close event | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
error event | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
extensions | Chrome Full support Yes | Edge Full support 12 | Firefox Full support 8 | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support 8 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
message event | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
onclose | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
onerror | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
onmessage | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
onopen | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
open event | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
protocol | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
| Supports protocol as specified by RFC 6455 | Chrome Full support 16 | Edge Full support 12 | Firefox Full support 11 | IE Full support 10 | Opera Full support 15 | Safari Full support 6 | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 14 | Opera Android Full support 14 | Safari iOS Full support 6 | Samsung Internet Android Full support 1.0 |
readyState | Chrome Full support 43 | Edge Full support 12 | Firefox Full support 19 | IE Full support 10 | Opera Full support 30 | Safari Full support 10 | WebView Android Full support 43 | Chrome Android Full support 43 | Firefox Android Full support 19 | Opera Android Full support 30 | Safari iOS Full support 10 | Samsung Internet Android Full support 4.0 |
send | Chrome Full support 4 | Edge Full support 12 | Firefox
Full support
18
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 5 | WebView Android Full support ≤37 | Chrome Android Full support 18 | Firefox Android
Full support
18
| Opera Android Full support 12.1 | Safari iOS Full support 4.2 | Samsung Internet Android Full support 1.0 |
url | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
| Available in workers | Chrome Full support Yes | Edge Full support ≤18 | Firefox Full support 37 | IE ? | Opera ? | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support 37 | Opera Android ? | Safari iOS ? | Samsung Internet Android Full support Yes |
Legend
- Full support
- Full support
- Compatibility unknown
- Compatibility unknown
- See implementation notes.
- See implementation notes.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
