处理Windows之间的Javascript cookie竞争条件

时间:2013-02-22 09:03:39

标签: javascript synchronization race-condition

我正在构建一个Web应用程序(使用Fay生成Javascript),用户可以在该应用程序中打开多个选项卡/窗口。我希望所有打开的实例共同托管一个有限状态机,其中所有打开的窗口/选项卡之间只共享一个状态。状态转换由窗口中的事件和超时触发。只要至少有一个窗口仍处于打开状态,就需要进行超时,因此我将它们设置在所有窗口中。

因为我希望这个系统也适用于旧浏览器,我不想使用LocalStorage或工作线程来实现它,所以我试图使用cookie在Windows之间进行通信。我还希望Windows之间的大部分通信都发生在客户端(即我不希望每次状态转换都需要向服务器端发出HTTP请求)。

然而,这会产生竞争条件:所有打开的窗口同时触发超时,并可能覆盖在此状态转换时彼此执行的cookie更改。我可以通过向超时添加噪声并通过在超时被命中时立即设置新状态cookie来减少可能发生竞争条件的窗口,但是因为似乎没有原子方式来读取 - 和 - 更新一个cookie,比赛仍在那里,不太可能发生。

在同一域名的Windows之间进行通信时,Javascript中有哪些跨浏览器,纯客户端同步原语?

0 个答案:

没有答案