0

我已经为一项服务实现了 socket.io,并且已经将其删除。但是,我仍然有客户端向不再存在的端点 /socket.io 发出初始连接请求。响应各种 http 状态代码似乎并不重要。

有没有办法阻止客户端尝试连接?我每分钟收到数千个请求。

4

2 回答 2

0

最好的办法是修改客户端禁用socket.io代码。除此之外,不,socket.io 没有特殊的“停止并着火”信号,您可以将其发送给客户端以防止他们再次尝试。

如果由于某种原因无法更新客户端,则应在更高层阻止路径 - 根据应用程序的部署方式,这可能是云负载均衡器、Web 应用程序防火墙或 haproxy 实例.

于 2021-03-25T13:49:15.017 回答
0

看起来您从服务器中删除了一个服务端点(socket.io 端点),而没有首先在广阔的世界中更新您的客户端。

恕我直言,这是一个错误。这是一个常见的错误;同步升级服务器和客户端很困难。通常我们会弃用功能:为了向后兼容,我们将它们留在服务器中,直到所有客户端停止使用它们。

我猜你的客户端代码,当 socket.io 连接尝试失败时,会重试这些尝试。因此,您的服务器正被重试轰炸。您的直接解决方法是放回 socket.io 端点,以便连接尝试成功。这将摆脱重试的洪水。接受这些 socket.io 连接后,您无需对它们进行任何操作。

然后,您需要弄清楚如何在现场更新您的客户端代码以停止使用您已弃用的 socket.io 服务器功能。

于 2021-03-25T13:50:59.503 回答