我需要能够知道哪个客户端正在通过Web套接字向服务器发送请求,并将其区别于其他客户端。解决方案是客户端ID,但我不知道存储它的最佳方法,以便客户端可以将其与每个请求一起发送。
客户端
var clientId = null;
if (response.method === "connect"){
clientId = response.clientId
}
答案 0 :(得分:1)
您可以使用IIFE包装代码,从而消除了在IIFE之外访问全局范围内变量的可能性。因此,只有在此IIFE内部运行的代码才能访问clientId
变量。但是,例如从控制台更改clientId
不会改变任何事情。
(function() {
// Put all of your code in this scope.
var clientId = null;
if (response.method === "connect"){
clientId = response.clientId
}
})();
如果仅覆盖变量是一个问题,则可以选择使用Web Storage API将ID永久或保存在选项卡关闭之前在浏览器中保存。因此,您可以像下面的示例一样存储它。
if (response.method === "connect"){
sessionStorage.setItem('clientId', JSON.stringify(response.clientId));
}
然后在脚本的最下方甚至在同一页面的另一脚本中使用以下代码,使用clientId:
var storedClientId = sessionStorage.getItem('clientId');
if (storedClientId !== null) { // Check if the id has been set.
var clientId = JSON.parse(storedClientId);
}
因此,IIFE将无法在自己的范围之外对变量进行修改。而且,Web Storage API会将您的客户端ID存储在浏览器中,而不是存储在变量中。