[我在基于浏览器的项目中使用socket.io,其中在客户端代码中调用io()以启动与主机服务器的套接字连接。
var socket = io();
socket.on('connect', () => {
// ...
}
我遇到的问题是,用户可以轻松地打开控制台并多次调用io(),从而导致与服务器的多个套接字连接。 socket.io客户端文档确认,多次调用io()时,将建立与服务器的独特连接。
我有什么办法可以防止这种情况发生?
我希望在客户端上避免这种情况,但我也很高兴尝试服务器端的解决方案。
我已经尝试过搜索,但是大多数这样的问题是有关刷新页面或类似内容时意外打开多个连接的,我想阻止用户故意打开控制台并创建新的连接。
我希望可以通过某种方法从控制台隐藏io(),但任何解决方案都将不胜感激。
编辑:有人告诉我,不应信任客户端,因为不能阻止用户使用控制台。在那种情况下,我希望服务器能够停止来自一个窗口或设备的多个连接。我将如何去做?
感谢您的帮助。
让用户首先调用的服务器脚本生成一个随机的身份验证字符串。可以将其放入JavaScript变量中,并在连接套接字时发送。套接字服务器应仅允许将身份验证器与单个套接字一起使用,因此,如果用户从代码中提取身份验证器,并尝试将其与自己的套接字一起使用,则连接将被拒绝。