阻止用户调用 io() 从控制台创建新的套接字连接

Preventing users from calling io() to create new socket connections from the console

我在基于浏览器的项目中使用 socket.io,其中在客户端代码中调用 io() 以启动到主机服务器的套接字连接。

var socket = io();
socket.on('connect', () => {
    // ...
}

我遇到的问题是用户可以轻松打开控制台并多次调用 io(),从而导致与服务器的多个套接字连接。 socket.io 客户端文档确认当多次调用 io() 时,会建立与服务器的不同连接。

我有什么办法可以防止这种情况发生吗?

我更愿意在客户端阻止这种情况,但我也很乐意尝试服务器端解决方案。

我试过四处搜索,但大多数此类问题都是关于在刷新页面或类似情况时意外打开多个连接,我想阻止用户故意打开控制台并创建新连接。

我希望有某种方法可以从控制台隐藏 io(),但任何解决方案都将不胜感激。

编辑: 我被告知不应该信任客户端,因为无法阻止用户使用控制台。在那种情况下,我希望服务器能够停止来自一个 window 或设备的多个连接。我该怎么做?

感谢您的帮助。

让用户第一次调用的服务器脚本生成一个随机的验证码字符串。这可以放入一个 JavaScript 变量中,它会在连接套接字时发送。套接字服务器应该只允许验证器用于单个套接字,因此如果用户从代码中提取验证器并尝试将其用于自己的套接字,连接将被拒绝。