soulbird commented on code in PR #7581:
URL: https://github.com/apache/apisix/pull/7581#discussion_r934231150


##########
docs/zh/latest/plugins/limit-conn.md:
##########
@@ -136,3 +136,79 @@ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 
'X-API-KEY: edd1c9f034335f13
 ```
 
 现在就已经移除了 limit-conn 插件了。其他插件的开启和移除也是同样的方法。
+
+## 对 WebSocket 连接限速
+
+Apache APISIX 支持 WebSocket 代理,我们可以使用 `limit-conn` 插件限制 WebSocket 连接的并发数。
+
+1、启动 WebSocket Server
+
+```shell
+docker run -p 1980:8080 --name websocket-demo casperklein/websocket-demo
+```
+
+2、注册路由,在路由上启用 WebSocket 代理并开启 limit-conn 插件
+
+```shell
+curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: 
edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+    "uri": "/ws",
+    "enable_websocket":true,
+    "plugins": {
+        "limit-conn": {
+            "conn": 1,
+            "burst": 0,
+            "default_conn_delay": 0.1,
+            "rejected_code": 503,
+            "key_type": "var",
+            "key": "remote_addr"
+        }
+    },
+    "upstream": {
+        "type": "roundrobin",
+        "nodes": {
+            "127.0.0.1:1980": 1
+        }
+    }
+}'
+```
+
+上述路由在 `/ws` 上开启了 WebSocket 代理,并限制了 WebSocket 连接并发数 1,超过 1 个并发的 WebSocket 连接将返回 
503 拒绝请求。
+
+3、发起 WebSocket 请求,连接建立成功
+
+```shell
+curl --include \
+     --no-buffer \
+     --header "Connection: Upgrade" \
+     --header "Upgrade: websocket" \
+     --header "Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==" \
+     --header "Sec-WebSocket-Version: 13" \
+     --http1.1 \
+     http://127.0.0.1:9080/ws
+
+HTTP/1.1 101 Switching Protocols
+Connection: upgrade
+Upgrade: websocket
+Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
+Server: APISIX/2.15.0
+```
+
+4、在另一个终端中再次发起 WebSocket 请求,请求将被拒绝
+
+```shell
+HTTP/1.1 503 Service Temporarily Unavailable
+Date: Mon, 01 Aug 2022 03:49:17 GMT
+Content-Type: text/html; charset=utf-8
+Content-Length: 194
+Connection: keep-alive
+Server: APISIX/2.15.0
+
+<html>
+<head><title>503 Service Temporarily Unavailable</title></head>
+<body>
+<center><h1>503 Service Temporarily Unavailable</h1></center>
+<hr><center>openresty</center>
+</body>
+</html>
+```

Review Comment:
   Both of these are response data



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to