WebSocket API

WebSocket API 是一种先进的技术,可在用户浏览器和服务器之间开启双向交互式通信会话。利用该 API,可以向服务器发送信息,并接收事件驱动的响应,而无需轮询服务器以获得回复。

备注: 虽然 WebSocket 连接在功能上与标准 Unix 风格的 socket 有些类似,但两者并无关联。

接口

WebSocket

用于连接 WebSocket 服务器的主要接口,之后可以在这个连接上发送和接收数据。

CloseEvent

连接关闭时 WebSocket 对象触发的事件。

MessageEvent

当从服务器获取到消息的时候 WebSocket 对象触发的事件。

指南

工具

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

规范

Specification
WebSockets Standard
# the-websocket-interface

浏览器兼容性

api.WebSocket

BCD tables only load in the browser

api.WebSocketStream

BCD tables only load in the browser

参见