Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf56df7c

Browse files
chrisdavidmillstomayacwbamberg
authored
Editorial review: Document WebSocketStream (#35548)
* Document WebSocketStream* Add WebSocket interface documentation* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websockets_api/using_websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websocketstream/closed/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websocketstream/opened/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websocketstream/url/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* Update files/en-us/web/api/websocketstream/websocketstream/index.mdCo-authored-by: Thomas Steiner <tomac@google.com>* make protocol usage consistent ascross example snippets* Fixes for wbamberg review comments* Fixes for 2nd round of wbamberg review* typo---------Co-authored-by: Thomas Steiner <tomac@google.com>Co-authored-by: wbamberg <will@bootbonnet.ca>
1 parent167a819 commitf56df7c

File tree

12 files changed

+743
-13
lines changed

12 files changed

+743
-13
lines changed

‎files/en-us/web/api/closeevent/code/index.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ browser-compat: api.CloseEvent.code
88

99
{{APIRef("Websockets API")}}
1010

11-
The**`code`** read-only property of the {{domxref("CloseEvent")}} interface returns a[WebSocket connection close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5) indicating the reason theserver gave for closing the connection.
11+
The**`code`** read-only property of the {{domxref("CloseEvent")}} interface returns a[WebSocket connection close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5) indicating the reason theconnection was closed.
1212

1313
##Value
1414

15-
An integer[WebSocket connection close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5) in the range`1000` -`4999`, indicating the reason theserver gave for closing the connection.
15+
An integer[WebSocket connection close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5) in the range`1000` -`4999`, indicating the reason theconnection was closed.
1616

1717
<tableclass="no-markdown">
1818
<thead>

‎files/en-us/web/api/closeevent/index.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ A `CloseEvent` is sent to clients using {{Glossary("WebSockets")}} when the conn
2121
_This interface also inherits properties from its parent, {{domxref("Event")}}._
2222

2323
- {{domxref("CloseEvent.code")}} {{ReadOnlyInline}}
24-
- : Returns an`unsigned short` containing the close code sent by the server.
24+
- : Returns an`unsigned short` containing the close code.
2525
- {{domxref("CloseEvent.reason")}} {{ReadOnlyInline}}
2626
- : Returns a string indicating the reason the server closed the connection. This is specific to the particular server and sub-protocol.
2727
- {{domxref("CloseEvent.wasClean")}} {{ReadOnlyInline}}

‎files/en-us/web/api/websocket/index.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ The `WebSocket` object provides the API for creating and managing a [WebSocket](
1111

1212
To construct a`WebSocket`, use the[`WebSocket()`](/en-US/docs/Web/API/WebSocket/WebSocket) constructor.
1313

14+
>[!NOTE]
15+
>The`WebSocket` API has no way to apply[backpressure](/en-US/docs/Web/API/Streams_API/Concepts#backpressure), therefore when messages arrive faster than the application can process them, the application will either fill up the device's memory by buffering those messages, become unresponsive due to 100% CPU usage, or both. For an alternative that provides backpressure automatically, see {{domxref("WebSocketStream")}}.
16+
1417
{{InheritanceDiagram}}
1518

1619
##Constructor

‎files/en-us/web/api/websockets_api/index.md‎

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,21 @@
22
title:The WebSocket API (WebSockets)
33
slug:Web/API/WebSockets_API
44
page-type:web-api-overview
5-
browser-compat:api.WebSocket
5+
browser-compat:
6+
-api.WebSocket
7+
-api.WebSocketStream
68
---
79

810
{{DefaultAPISidebar("WebSockets API")}}
911

10-
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.
12+
The**WebSocket 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.
13+
14+
The WebSocket API provides two alternative mechanisms for creating and using web socket connections: the {{domxref("WebSocket")}} interface and the {{domxref("WebSocketStream")}} interface.
15+
16+
- The`WebSocket` interface is stable and has good browser and server support. However it doesn't support[backpressure](/en-US/docs/Web/API/Streams_API/Concepts#backpressure). 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.
17+
- The`WebSocketStream` is a {{jsxref("Promise")}}-based alternative to`WebSocket`. It uses the[Streams API](/en-US/docs/Web/API/Streams_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,`WebSocketSteam` is non-standard and currently only supported in one rendering engine.
18+
19+
Additionally, the[WebTransport API](/en-US/docs/Web/API/WebTransport_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 either`WebSocket` or`WebSocketStream`, 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.
1120

1221
>[!NOTE]
1322
>While a WebSocket connection is functionally somewhat similar to standard Unix-style sockets, they are not related.
@@ -16,6 +25,8 @@ The **WebSocket API** is an advanced technology that makes it possible to open a
1625

1726
-[`WebSocket`](/en-US/docs/Web/API/WebSocket)
1827
- : The primary interface for connecting to a WebSocket server and then sending and receiving data on the connection.
28+
-[`WebSocketStream`](/en-US/docs/Web/API/WebSocketStream) {{non-standard_inline}}
29+
- : Promise-based interface for connecting to a WebSocket server; uses[streams](/en-US/docs/Web/API/Streams_API) to send and receive data on the connection.
1930
-[`CloseEvent`](/en-US/docs/Web/API/CloseEvent)
2031
- : The event sent by the WebSocket object when the connection closes.
2132
-[`MessageEvent`](/en-US/docs/Web/API/MessageEvent)
@@ -49,28 +60,26 @@ The HTTP headers are used in the [WebSocket handshake](/en-US/docs/Web/API/WebSo
4960
-[Writing a WebSocket server in C#](/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server)
5061
-[Writing a WebSocket server in Java](/en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java)
5162
-[Writing a WebSocket server in JavaScript (Deno)](/en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_JavaScript_Deno)
63+
-[Using WebSocketStream to write a client](/en-US/docs/Web/API/WebSockets_API/Using_WebSocketStream)
5264

5365
##Tools
5466

5567
-[AsyncAPI](https://www.asyncapi.com/): 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](https://www.asyncapi.com/blog/websocket-part1) and[how to do so](https://www.asyncapi.com/blog/websocket-part2).
56-
-[HumbleNet](https://hacks.mozilla.org/2017/06/introducing-humblenet-a-cross-platform-networking-library-that-works-in-the-browser/): 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.
5768
-[µWebSockets](https://github.com/uNetworking/uWebSockets): Highly scalable WebSocket server and client implementation for[C++11](https://isocpp.org/) and[Node.js](https://nodejs.org/).
5869
-[Socket.IO](https://socket.io/): A long polling/WebSocket based third party transfer protocol for[Node.js](https://nodejs.org/).
5970
-[SocketCluster](https://socketcluster.io/): A pub/sub WebSocket framework for[Node.js](https://nodejs.org/) with a focus on scalability.
6071
-[WebSocket-Node](https://github.com/theturtle32/WebSocket-Node): A WebSocket server API implementation for[Node.js](https://nodejs.org/).
6172
-[Total.js](https://www.totaljs.com/): Web application framework for[Node.js](https://nodejs.org/en) (Example:[WebSocket chat](https://github.com/totaljs/examples/tree/master/websocket))
62-
-[Faye](https://www.npmjs.com/package/faye-websocket): A {{DOMxRef("WebSocket")}} (two-ways connections) and[EventSource](/en-US/docs/Web/API/EventSource) (one-way connections) for[Node.js](https://nodejs.org/) Server and Client.
6373
-[SignalR](https://dotnet.microsoft.com/en-us/apps/aspnet/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.
6474
-[Caddy](https://caddyserver.com/): A web server capable of proxying arbitrary commands (stdin/stdout) as a websocket.
6575
-[ws](https://github.com/websockets/ws): a popular WebSocket client & server library for[Node.js](https://nodejs.org/en).
66-
-[jsonrpc-bidirectional](https://github.com/bigstepinc/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).
6776
-[cowboy](https://github.com/ninenines/cowboy): Cowboy is a small, fast and modern HTTP server for Erlang/OTP with WebSocket support.
6877
-[ZeroMQ](https://zeromq.org/): ZeroMQ is embeddable networking library that carries messages across in-process, IPC, TCP, UDP, TIPC, multicast and WebSocket.
6978
-[WebSocket King](https://websocketking.com/): A client tool to help develop, test and work with WebSocket servers.
7079
-[PHP WebSocket Server](https://github.com/napengam/phpWebSocketServer): Server written in PHP to handle connections via websockets`wss://` or`ws://` and normal sockets over`ssl://`,`tcp://`
71-
-[Channels](https://channels.readthedocs.io/en/stable/index.html): Django library that adds support for WebSockets (and other protocols that require long running asynchronous connections).
72-
-[Channels](https://hexdocs.pm/phoenix/channels.html): Scalable real-time communication using WebSocket in Elixir Phoenix framework.
73-
-[LiveView](https://github.com/phoenixframework/phoenix_live_view): Real-time interactive web experiences through WebSocket in Elixir Phoenix framework.
80+
-[DjangoChannels](https://channels.readthedocs.io/en/stable/index.html): Django library that adds support for WebSockets (and other protocols that require long running asynchronous connections).
81+
-[(Phoenix)Channels](https://hexdocs.pm/phoenix/channels.html): Scalable real-time communication using WebSocket in Elixir Phoenix framework.
82+
-[PhoenixLiveView](https://github.com/phoenixframework/phoenix_live_view): Real-time interactive web experiences through WebSocket in Elixir Phoenix framework.
7483
-[Flask-SocketIO](https://flask-socketio.readthedocs.io/en/latest/): gives Flask applications access to low latency bi-directional communications between the clients and the server.
7584
-[Gorilla WebSocket](https://pkg.go.dev/github.com/gorilla/websocket): Gorilla WebSocket is a[Go](https://go.dev/) implementation of the WebSocket protocol.
7685

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp