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
------

* Writing WebSocket client applications
* Writing WebSocket servers
* Writing a WebSocket server in C#
* Writing a WebSocket server in Java
* Writing a WebSocket server in JavaScript (Deno)
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
--------------

| Specification |
| --- |
| WebSockets Standard # the-websocket-interface |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* RFC 6455 — The WebSocket Protocol
* WebSocket API Specification
* Server-Sent Events