W3cubDocs

/Web APIs

The WebSocket API (WebSockets)

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

Tools

  • AsyncAPI: A specification for describing event-driven architectures based on protocols like WebSocket. You can use it to describe WebSocket-based APIs just as you would describe REST APIs with the OpenAPI specification. Learn why you should consider using AsyncAPI with WebSocket and how to do so.
  • 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.
  • 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.
  • ZeroMQ: ZeroMQ is embeddable networking library that carries messages across in-process, IPC, TCP, UDP, TIPC, multicast and WebSocket.
  • WebSocket King: A client tool to help develop, test and work with WebSocket servers.
  • PHP WebSocket Server: Server written in PHP to handle connections via websockets wss:// or ws://and normal sockets over ssl:// ,tcp://
  • Channels: Django library that adds support for WebSockets (and other protocols that require long running asynchronous connections).
  • Flask-SocketIO: gives Flask applications access to low latency bi-directional communications between the clients and the server.
  • Gorilla WebSocket: Gorilla WebSocket is a Go implementation of the WebSocket protocol.

Specifications

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
WebSocket 5 12 117–11 10 12.1 5 4.4 18 147–14 12.1 4.2 1.0
WebSockets_API 5 12 11
7–11Message size limited to 16 MB (see bug 711205).
10 12.1 5 4.4 18 14
7–14Message size limited to 16 MB (see bug 711205).
12.1 4.2 1.0
binaryType 15 12 11 10 12.1 6 4.4 18 14 12.1 6 1.0
bufferedAmount 5 12 7 10 12.1 5 4.4 18 7 12.1 4.2 1.0
close 5 12 7 10 12.1 5 4.4 18 7 12.1 4.2 1.0
close_event 5 12 7 10 12.1 5 ≤37 18 7 12.1 4.2 1.0
error_event 5 12 7 10 12.1 5 ≤37 18 7 12.1 4.2 1.0
extensions 16 12 8 10 12.1 6 4.4 18 8 12.1 6 1.0
message_event 5 12 7 10 12.1 5 ≤37 18 7 12.1 4.2 1.0
open_event 5 12 7 10 12.1 5 ≤37 18 7 12.1 4.2 1.0
protocol 15 12 7 No 12.1 6 4.4 18 7 12.1 6 1.0
protocol_rfc_6455 16 12 11 10 15 6 ≤37 18 14 14 6 1.0
readyState 5 12 7 10 12.1 5 4.4 18 7 12.1 4.2 1.0
send 5 12 18
11–18Only parameter of type ArrayBuffer and String supported.
8–11Only parameter of type String supported.
7–8Only parameter of type String supported. Returns boolean.
10 12.1 5 4.4 18 18
14–18Only parameter of type ArrayBuffer and String supported.
8–14Only parameter of type String supported.
7–8Only parameter of type String supported. Returns boolean.
12.1 4.2 1.0
url 18 12 7 No 12.1 6 4.4 18 7 12.1 6 1.0
worker_support 5 12 37 10 12.1 5 ≤37 18 37 12.1 5 1.0

See also

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API