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- The
closehandler is executed when a connection with a websocket is closed.
Also available via theoncloseproperty error- The
errorhandler is executed when a connection with a websocket has been closed with prejudice (some data couldn't be sent for example).
Also available via theonerrorproperty. message- The
messagehandler is executed when data is received through a websocket.
Also available via theonmessageproperty. open- The
openhandler is executed when a connection with a websocket is opened.
Also available via theonopenproperty.
Example
// 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 | Comment |
|---|---|---|
| HTML Living Standard The definition of 'WebSocket' in that specification. |
Living Standard | Initial definition |
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.
Update compatibility data on GitHub
| Desktop | Mobile | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WebSocket | Chrome Full support Yes | Edge Full support Yes | Firefox
Full support
11
| IE ? | Opera Full support Yes | Safari Full support Yes | WebView Android ? | Chrome Android ? | Edge Mobile Full support Yes | Firefox Android
Full support
14
| Opera Android ? | Safari iOS Full support Yes | Samsung Internet Android ? |
WebSocket() constructor | Chrome Full support Yes | Edge ? | Firefox
Full support
7
| IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support 7 | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
binaryType | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
bufferedAmount | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
close | Chrome Full support Yes | Edge Full support 12 | Firefox
Full support
8
| IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
extensions | Chrome Full support Yes | Edge Full support 12 | Firefox Full support 8 | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support 8 | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
onclose | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
onerror | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
onmessage | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
onopen | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
protocol | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
readyState | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
send | Chrome Full support Yes | Edge Full support 12 | Firefox
Full support
18
| IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
url | Chrome Full support Yes | Edge Full support 12 | Firefox Full support Yes | IE ? | Opera Full support Yes | Safari ? | WebView Android ? | Chrome Android Full support Yes | Edge Mobile ? | Firefox Android Full support Yes | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
| 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 | Edge Mobile Full support 12 | Firefox Android Full support 14 | Opera Android Full support 15 | Safari iOS Full support 6 | Samsung Internet Android ? |
| Available in workers | Chrome Full support Yes | Edge Full support Yes | Firefox Full support 37 | IE ? | Opera ? | Safari ? | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support 37 | Opera Android ? | Safari iOS ? | Samsung Internet Android ? |
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.
See also
Document Tags and Contributors
Tags:
Contributors to this page:
irenesmith,
mdnwebdocs-bot,
JoakimCh,
sideshowbarker,
DayDreamer,
jhpratt,
TaeYoon2,
fscholz,
Claas,
metebalci,
SaschaNaz,
Sheppy,
tocretpa,
leoo,
sagea,
bugfroggy,
libbymc,
lloydmangnall,
danielcompton,
Sebastianz,
jianzhou520,
IncSW,
afzaal_ahmad_zeeshan,
DirectXMan12,
kscarfone,
Reachmeatshivam,
teoli,
ericz,
Kennyluck,
evilpie
Last updated by:
irenesmith,