跳到主要内容

代理 WebSocket 连接

WebSocket 是一种在单个 TCP 连接上提供客户端和服务器之间双向通道的协议。它彻底改变了 Web 上的实时通信,可以实时发送和接收数据。该协议广泛用于各种交互式应用程序,包括聊天应用程序、协作编辑工具、多人游戏等。

本指南将向你展示如何使用 APISIX 代理 WebSocket 连接。

前置条件

  • 安装 Docker
  • 安装 cURL 以向服务发送请求进行验证。
  • 安装 websocat 以建立与 WebSocket 服务器的 WebSocket 连接。
  • 按照 快速入门教程 在 Docker 或 Kubernetes 中启动一个新的 APISIX 实例。

启动 WebSocket 示例服务器

启动一个支持 WebSocket 的 示例上游服务器

docker run -d \
-p 8080:8080 \
--name websocket-server \
--network=apisix-quickstart-net \
jmalloc/echo-server

该服务器在 /.ws 处有一个 WebSocket 端点,它会回显收到的任何消息。

在 APISIX 中创建路由

创建一个指向示例上游服务器的路由并启用 WebSocket:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "ws-route",
"uri": "/.ws",
"enable_websocket": true,
"upstream": {
"type": "roundrobin",
"nodes": {
"websocket-server:8080": 1
}
}
}'

验证连接

通过路由与 WebSocket 服务器建立连接:

websocat "ws://127.0.0.1:9080/.ws"

在终端中发送一条 "hello" 消息。你应该看到 WebSocket 服务器回显相同的消息:

Request served by 1cd244052136
hello
hello

你可以继续发送更多消息,WebSocket 服务器将回显你发送的任何消息。这表明双向连接已成功并持久。

下一步

你现在已经了解了如何使用 APISIX 代理 WebSocket 连接。如果你想限制 WebSocket 连接的数量,请参阅 limit-conn 插件文档以获取 更多信息