The WebSocket API is an advanced technology that makes it possible to open a two-way interactive communication session between the user's browser and a server. With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply.
Note: While a WebSocket connection is functionally somewhat similar to standard Unix-style sockets, they are not related.
Interfaces
WebSocket
- The primary interface for connecting to a WebSocket server and then sending and receiving data on the connection.
CloseEvent
- The event sent by the WebSocket object when the connection closes.
MessageEvent
- The event sent by the WebSocket object when a message is received from the server.
Guides
- Writing WebSocket client applications
- Writing WebSocket servers
- Writing a WebSocket server in C#
- Writing a WebSocket server in Java
Tools
- HumbleNet: A cross-platform networking library that works in the browser. It consists of a C wrapper around WebSockets and WebRTC that abstracts away cross-browser differences, facilitating the creation of multi-user networking functionality for games and other apps.
- µWebSockets: Highly scalable WebSocket server and client implementation for C++11 and Node.js.
- ClusterWS: Lightweight, fast and powerful framework for building scalable WebSocket applications in Node.js.
- CWS: Fast C++ WebSocket implementation for Node.js (uWebSockets v0.14 fork)
- Socket.IO: A long polling/WebSocket based third party transfer protocol for Node.js.
- SocketCluster: A pub/sub WebSocket framework for Node.js with a focus on scalability.
- WebSocket-Node: A WebSocket server API implementation for Node.js.
- Total.js: Web application framework for Node.js (Example: WebSocket chat)
- Faye: A WebSocket (two-ways connections) and EventSource (one-way connections) for Node.js Server and Client.
- SignalR: SignalR will use WebSockets under the covers when it's available, and gracefully fallback to other techniques and technologies when it isn't, while your application code stays the same.
- Caddy: A web server capable of proxying arbitrary commands (stdin/stdout) as a websocket.
- ws: a popular WebSocket client & server library for Node.js.
- jsonrpc-bidirectional: Asynchronous RPC which, on a single connection, may have functions exported on the server and, and the same time, on the client (client may call server, server may also call client).
- cowboy: Cowboy is a small, fast and modern HTTP server for Erlang/OTP with WebSocket support.
Related Topics
Specifications
Specification | Status | Comments |
---|---|---|
HTML Living StandardThe definition of 'WebSocket API' in that specification. | Living Standard | |
WebSockets | Candidate Recommendation | |
RFC 6455: The WebSocket Protocol | IETF RFC |
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 4 |
Edge
Full support 12 |
Firefox Full support 11 Full support 11 No support 7 — 11 Prefixed' Implemented with the vendor prefix: Moz Notes' Message size limited to 16 MB (see bug 711205). No support 4 — 6 Notes' Message size limited to 16 MB (see bug 711205). |
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 Full support 14 Notes' See bug 695635. No support 7 — 14 Prefixed' Implemented with the vendor prefix: Moz Notes' Message size limited to 16 MB (see bug 711205). No support 4 — 6 Notes' Message size limited to 16 MB (see bug 711205). |
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 Full support 7 No support 4 — 7 Notes' Parameter |
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 Full support 18 Notes' See bug 775368. No support 11 — 18 Notes' Only parameter of type Notes' Only parameter of type Notes' Only parameter of type |
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 Full support 18 Notes' See bug 775368. No support 14 — 18 Notes' Only parameter of type Notes' Only parameter of type Notes' Only parameter of type |
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.
See also
The WebSocket API (WebSockets) by Mozilla Contributors is licensed under CC-BY-SA 2.5.