我在Javascript中有一个变量,该变量是通过从HTML读取数字,向其添加数字,然后将其返回到HTML来创建的。
我想这样做,以便无论您是什么浏览器/用户是什么,您都可以看到该变量的最新版本。目前,如果我刷新页面,则该数字将重置为0
(默认值)。我希望这样做,以便当我从其他浏览器中查看该数字时将其更新为1
时,他们也会看到1
而不是0
。
我已经看到cookie是一种选择,但是我认为cookie只限于客户端吗?因此,这意味着只有我才能看到该变量的最新版本。
我已经看到会话是另一种选择,会话服务器端吗?他们会做我所追求的工作吗?
还有没有想到的另一种方法吗?
预先感谢
答案 0 :(得分:1)
我想这样做,以便无论您是什么浏览器/用户是什么,您都可以看到该变量的最新版本。
您需要将更新从浏览器发送到服务器,然后让该服务器将更新中继到所有其他客户端。如何进行此操作有很多选择,需要权衡各种因素和复杂性。
一种方法是简单地获取该号码并将其发送到服务器。然后,在下一个页面加载时,服务器将新数字注入到它输出的页面中(或通过API调用,通过AJAX,通过Fetch API或服务器发送的事件,WebSocket等为其提供服务)。但是,如果这样做,则需要决定如何处理并发。如果两个人同时加载页面会怎样?
您所描述的一般系统称为Operational Transform,这是一个兔子洞,您现在可能不想下降。只需了解,没有魔术可以同时使整个星球上的事物完美同步。您的系统必须以某种方式解决固有延迟。
我已经看到cookie是一种选择,但是我认为cookie只限于客户端吗?
是的,cookie是客户端的。它们随每个请求一起发送到服务器,但是,除了会话识别之外,这对您不是有用的工具。
我已经看到会话是另一种选择,会话服务器是服务器端吗?
可以,但是您需要找到一种方法来了解浏览器之间的用户身份。通常,会话ID存储在cookie中。