识别哪个选项卡发出了请求

时间:2013-01-15 07:57:07

标签: javascript ajax

这个问题可能没有答案。但是,我以为我会试一试。 我写了一篇很棒的单页应用程序。当应用程序启动时,打开的选项卡会“自动注册”服务器,该服务器存储为“活动”选项卡。

如果用户A在工作区中更改XYZ,则任何用户在该工作区上打开的每个选项卡都会收到XYZ已更改的通知。这会触发客户端的重新加载,这将会神奇地更新。目前,我通过民意调查来做到这一点。但是,当它全部工作时,我可以使用像WS或Socket.io这样的东西来使事情变得更快。

问题:每个标签都会收到通知。甚至是首先发起它的标签!(因此,已更新的屏幕会更新)

我不知何故需要服务器知道发出请求的选项卡的选项卡ID。请记住,用户可能打开了5个选项卡:如果他们更改了XYZ,则所有选项卡都应该收到通知,除了实际触发通知的那个!

目前,我正在为每个Ajax请求传递工作区ID(用户可能已登录,并且可以同时访问多个工作区)。

  • 解决方案1:为每个请求附加工作区ID 标签ID
  • 解决方案2:仅对每个请求使用选项卡ID。该应用程序将从tabID(它知道它属于哪个工作区)
  • 计算工作区ID
  • 解决方案3:????? (我遗失的东西?)

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

而不是让服务器担心向您发送更改通知的选项卡可能会使启动更改的选项卡忽略该通知。

有两种方法可以实现:

  • 更改内容后,标签会在短时间内输入所有通知。 (除非在很短的时间内发生多个标签的更改,否则这将正常工作。)
  • 让标签创建一个“更改ID”,通过对xyz的更改将其发送到服务器。广播更改通知包含此ID,发送标签将其识别为发送的并忽略它。