WebSocket API (WebSockets)

基线 广泛可用

此功能已非常成熟,可以在许多设备和浏览器版本上使用。它自 2015 年 7 月.

报告反馈

WebSocket API 是一种先进的技术,它使在用户的浏览器和服务器之间打开双向交互式通信会话成为可能。使用此 API,您可以向服务器发送消息,并接收事件驱动的响应,而无需轮询服务器以获取回复。

接口

WebSocket

注意:虽然 WebSocket 连接在功能上与标准的 Unix 样式套接字有些类似,但它们并不相关。

CloseEvent

用于连接到 WebSocket 服务器,然后在连接上发送和接收数据的首要接口。

MessageEvent

当连接关闭时,WebSocket 对象发送的事件。

指南

工具

  • 当从服务器接收到消息时,WebSocket 对象发送的事件。
  • AsyncAPI:一个用于描述基于 WebSocket 等协议的事件驱动架构的规范。您可以使用它来描述基于 WebSocket 的 API,就像使用 OpenAPI 规范描述 REST API 一样。学习为什么您应该考虑在 WebSocket 中使用 AsyncAPI 以及如何做到这一点
  • HumbleNet:一个跨平台网络库,可在浏览器中使用。它由一个围绕 WebSocket 和 WebRTC 的 C 包装器组成,消除了跨浏览器差异,方便为游戏和其他应用程序创建多用户网络功能。
  • µWebSockets:用于C++11Node.js 的高度可扩展 WebSocket 服务器和客户端实现。
  • Socket.IO:一个用于Node.js 的基于长轮询/WebSocket 的第三方传输协议。
  • SocketCluster:一个用于Node.js 的发布/订阅 WebSocket 框架,重点关注可扩展性。
  • WebSocket-Node:一个用于Node.js 的 WebSocket 服务器 API 实现。
  • Total.js:用于Node.js 的 Web 应用程序框架(示例:WebSocket 聊天)
  • Faye:一个用于WebSocket(双向连接)和EventSource(单向连接)的Node.js 服务器和客户端。
  • SignalR:当可用时,SignalR 会在幕后使用 WebSockets,并在不可用时优雅地回退到其他技术,而您的应用程序代码保持不变。
  • Caddy:一个能够将任意命令(stdin/stdout)作为 websocket 代理的 Web 服务器。
  • ws:一个流行的用于Node.js 的 WebSocket 客户端和服务器库。
  • jsonrpc-bidirectional:异步 RPC,在一个连接上,可以在服务器上导出函数,并且同时在客户端上导出函数(客户端可以调用服务器,服务器也可以调用客户端)。
  • cowboy:Cowboy 是一个小型、快速且现代的 Erlang/OTP HTTP 服务器,支持 WebSocket。
  • ZeroMQ:ZeroMQ 是一个可嵌入的网络库,可以跨进程、IPC、TCP、UDP、TIPC、组播和 WebSocket 传输消息。
  • WebSocket King:一个帮助开发、测试和使用 WebSocket 服务器的客户端工具。
  • PHP WebSocket Server:用 PHP 编写的服务器,用于通过 websockets wss://ws:// 和通过 ssl://tcp:// 的普通套接字处理连接。
  • Channels:Django 库,为 WebSockets(以及需要长时间运行的异步连接的其他协议)添加了支持。
  • Channels:在 Elixir Phoenix 框架中使用 WebSocket 进行可扩展的实时通信。
  • LiveView:通过 Elixir Phoenix 框架中的 WebSocket 实现实时交互式 Web 体验。
  • Flask-SocketIO:让 Flask 应用程序能够访问客户端和服务器之间的低延迟双向通信。

规范

Gorilla WebSocket:Gorilla WebSocket 是Go 对 WebSocket 协议的实现。
规范
# WebSockets 标准

浏览器兼容性

the-websocket-interface

另请参阅