Javascript 在同一web应用的实例之间共享存储

Javascript 在同一web应用的实例之间共享存储,javascript,local-storage,Javascript,Local Storage,我构建了一个在多个raspberry PI上运行的web应用程序,我想添加所有web应用程序实例共享的存储。基本上,我想要实现的是,对于我在浏览器中打开的每个实例,它会将设备名称和URL保存到我的浏览器中(我使用的是本地存储,但不是共享的),然后web应用程序会打开存储,读取所有以前访问的PI,以便轻松切换 我尝试使用本地存储来实现这一点,但没有成功,因为它显然是每个实例的,并且没有共享。任何人都可以建议一种适当的方法来实现这一点?如果请求来自同一个域,则本地存储密钥将在单个设备上共享 考虑如何

我构建了一个在多个raspberry PI上运行的web应用程序,我想添加所有web应用程序实例共享的存储。基本上,我想要实现的是,对于我在浏览器中打开的每个实例,它会将设备名称和URL保存到我的浏览器中(我使用的是本地存储,但不是共享的),然后web应用程序会打开存储,读取所有以前访问的PI,以便轻松切换


我尝试使用本地存储来实现这一点,但没有成功,因为它显然是每个实例的,并且没有共享。任何人都可以建议一种适当的方法来实现这一点?

如果请求来自同一个域,则本地存储密钥将在单个设备上共享

考虑如何共享密钥的以下示例:

您拥有域
http://example.com

您有两个应用托管在
http://example.com/app1/index.html
http://example.com/app2/index.html

您拥有上次访问的
的本地存储密钥,其中值为日期字符串

如果转到app1,它将设置密钥

如果转到app2,它将能够检索app1中设置的密钥

以这种方式在实例之间共享本地存储是否有问题


如果应用程序位于不同的域上,或者您试图在设备之间共享信息,则必须使用服务器来共享数据。

本地存储与听起来完全一样-对于浏览器(和计算机)来说是本地的。它用于在同一台机器/浏览器上使用同一应用程序/网站在多个会话之间存储数据。如果您想在运行在不同机器或多个不同浏览器上的应用程序的多个实例之间共享某些信息,则需要将其存储在服务器上


如何将其存储在服务器上则是一个单独的问题(有很多选项,例如写入文件或数据库)。在任何情况下,实现都需要与客户端应用程序分开。

本地存储是当前域的本地存储。浏览器中内置的所有网页之间没有可自由共享的存储空间

如果您有多个web应用程序/应用程序实例,则它们需要相互了解,以便进行通信(通过)和交换URL,让每个应用程序/应用程序实例在本地存储并显示它们。有几种方法可以做到这一点:

  • 让用户明确添加他知道的其他域,以便您可以与他们联系
  • 让服务器宣布它们在本地网络上的存在(或在每台服务器上使用配置文件),以便它们在服务网站之前相互了解
  • 在每个应用程序网站都会联系的已知域中有一个中心(“存储”)网站

这不是服务器的用途吗?我不知道服务器如何解决我的问题。也许你没有得到我想要的。我需要将东西保存到客户端,如果有这样的东西,它不是“web应用程序”,而是多个应用程序——可能也在不同的域上。您需要某种方式让这些实例相互了解,但不需要浏览器的帮助。您需要某种服务器端中央注册表。(分散也可以,但更复杂)。您可以使用浏览器会话进行通信(跨域XHR、跨帧消息传递等),但这也不必要地复杂。从一开始就很清楚。这种“共享的存储”就是服务器/数据库。啊,那么你想在你自己的浏览器中使用某种存储,这种存储总是可以从每个域访问吗?需要注意的是,这种存储只存在于一个设备/客户机上,不能在设备/客户机之间共享。@JeffHuijsmans是的,我在回答中已经说得更清楚了。谢谢,这正是我在做的相同的键,但似乎每个设备都创建了自己的列表。是的,我所有的设备都在同一个网络上。同样,我不想要设备**/客户端**。我想要的只是设备客户端。@TheBrash正如其他海报告诉你的,是的,这是预期的行为。如果你想在设备之间共享信息,你需要一个服务器。我的答案只适用于单个域上的单个设备。