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