阻止 socket.io 客户端尝试连接

Prevent socket.io client from attempting to connect

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

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

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

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

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

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

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

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