Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

The WebSocket API (WebSockets)

TheWebSocket API 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 responses without having to poll the server for a reply.

The WebSocket API provides two alternative mechanisms for creating and using web socket connections: theWebSocket interface and theWebSocketStream interface.

  • TheWebSocket interface is stable and has good browser and server support. However it doesn't supportbackpressure. As a result, when messages arrive faster than the application can process them it will either fill up the device's memory by buffering those messages, become unresponsive due to 100% CPU usage, or both.
  • TheWebSocketStream interface is aPromise-based alternative toWebSocket. It uses theStreams API to handle receiving and sending messages, meaning that socket connections can take advantage of stream backpressure automatically, regulating the speed of reading or writing to avoid bottlenecks in the application. However,WebSocketStream is non-standard and currently only supported in one rendering engine.

Additionally, theWebTransport API is expected to replace the WebSocket API for many applications. WebTransport is a versatile, low-level API that provides backpressure and many other features not supported by eitherWebSocket orWebSocketStream, such as unidirectional streams, out-of-order delivery, and unreliable data transmission via datagrams. WebTransport is more complex to use than WebSockets and its cross-browser support is not as wide, but it enables the implementation of sophisticated solutions. If standard WebSocket connections are a good fit for your use case and you need wide browser compatibility, you should employ the WebSockets API to get up and running quickly. However, if your application requires a non-standard custom solution, then you should use the WebTransport API.

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.

WebSocketStreamNon-standard

Promise-based interface for connecting to a WebSocket server; usesstreams to send and receive 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.

Related HTTP headers

The HTTP headers are used in theWebSocket handshake:

Sec-WebSocket-Key

An HTTP request header that contains a nonce from the client.This is used in theWebSocket opening handshake to verify that the client explicitly intends to open a WebSocket.It is added automatically by the browser.

Sec-WebSocket-Accept

An HTTPresponse header used in theWebSocket opening handshake to indicate that the server is willing to upgrade to a WebSocket connection.The value in the directive is calculated from the value ofSec-WebSocket-Key in the corresponding request.

Sec-WebSocket-Version

An HTTP header that in requests indicates the version of the WebSocket protocol understood by the client.In responses, it is sent only if the requested protocol version is not supported by the server, and lists the versions that the server supports.

Sec-WebSocket-Protocol

An HTTP header that in requests indicates the sub-protocols supported by the client in preferred order.In responses, it indicates the sub-protocol selected by the server from the client's preferences.

Sec-WebSocket-Extensions

An HTTP header that in requests indicates the WebSocket extensions supported by the client in preferred order.In responses, it indicates the extension selected by the server from the client's preferences.

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. Learnwhy you should consider using AsyncAPI with WebSocket andhow to do so.
  • µWebSockets: Highly scalable WebSocket server and client implementation forC++11 andNode.js.
  • Socket.IO: A long polling/WebSocket based third party transfer protocol forNode.js.
  • SocketCluster: A pub/sub WebSocket framework forNode.js with a focus on scalability.
  • WebSocket-Node: A WebSocket server API implementation forNode.js.
  • Total.js: Web application framework forNode.js (Example:WebSocket chat)
  • 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 forNode.js.
  • 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 websocketswss:// orws:// and normal sockets overssl://,tcp://
  • Django Channels: Django library that adds support for WebSockets (and other protocols that require long running asynchronous connections).
  • (Phoenix) Channels: Scalable real-time communication using WebSocket in Elixir Phoenix framework.
  • Phoenix LiveView: Real-time interactive web experiences through WebSocket in Elixir Phoenix framework.
  • Flask-SocketIO: gives Flask applications access to low latency bi-directional communications between the clients and the server.
  • Gorilla WebSocket: Gorilla WebSocket is aGo implementation of the WebSocket protocol.

Specifications

Specification
WebSockets
# the-websocket-interface

Browser compatibility

api.WebSocket

api.WebSocketStream

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp