2009-10-29 61 views

回答

2

使用

Reverse AJAX

反向阿贾克斯指的是使用长期的HTTP连接 使web服务器和 浏览器之间低延迟通信 一个Ajax设计 模式。基本上它是 从客户端向服务器发送数据的一种方式,并且 是用于将服务器数据 推回到浏览器的机制。

Comet (programming)

在web开发,彗星是 新词来描述一个web 应用模型,其中一个长期持有 HTTP请求允许Web服务器向 推送数据到一个浏览器,没有 浏览器明确要求它。彗星是用于实现这种 交互的多个 技术的总称。所有这些方法都依赖 默认情况下在 浏览器中包含的功能,例如JavaScript,而非 而非非默认插件。

+0

所以你说服务器会在窗口关闭时立即注意到缺少HTTP连接?反向AJAX连接是否必须轮询服务器以保持连接打开?如果是这样,它不完全回答这个问题... – 2009-10-29 04:57:33

+0

我有一个LAMP堆栈。反向AJAX可能与LAMP? (假设有大量访问者) – chris 2009-10-29 04:57:39

+0

是的,使用LAMP可以实现反向AJAX。 – 2009-10-29 04:59:07

1

您可以使用javascript on_exit事件来触发ajax事件,使用跟踪器打开弹出窗口或执行其他类似操作。这些仅在用户点击离开您的页面时才有效,而不是关闭窗口。

4

在其他答案中提出的技术解决方案是好的,只要他们去,但我不知道他们如何回答底层问题。

现在,我有4个Safari窗口打开,总共有17个选项卡;和一个Goggle Chrome浏览器,有4个标签。不确定为什么我目前没有打开任何Firefox(可能只是在最近升级到3.5.4后忘记重新启动它),但通常会有2-3个窗口与另外的8-10个选项卡。我是否仍然在观看这30页左右的网页 - 同时......?从技术上讲,我想每个基于编程的解决方案都会说,为什么,当然是,我......这对你有什么意义吗?!

在现实生活中,我可以(也许,除非我在我的电脑上的其他人再做事)将在给定时间浏览这些网页之一 - 也许2-3,如果我有多个或非常大屏幕,但通常情况下,1是现实生活中合理的答案。哪一个?如果没有大量的Javascript魔法,你不会发现 - 如果那样的话。

这是一个很难的问题,添加奇怪的约束而不是具有魔法的Javascript定期告诉服务器“我仍然打开,它看起来像用户正在查看我[[一些交互发生在最后XX秒,或...]]“vs”我打开了,但我怀疑我在后台,或者用户离开浏览器打开浏览器的午餐,因为自从YYY几秒前没有互动“vs”我正在离开来自”(没有消息意味着整个浏览器崩溃或东西) - 补充说,奇怪的约束基本上确保问题是完全不溶于

如果你真的关心关于用户是否实际上是查看的页面,从Javascript回到服务器的周期性的每隔几秒的Ajax交互是一个微不足道的代价,而且是你的问题中最小的问题,如果你不真正关心,那当然是不同的,也许告诉我们什么是实际问题你真的想要解决 ... ?!

+0

这是一个社交网络 - 所以重要的是要知道这个人目前是否“可用” – chris 2009-10-29 05:38:00

+0

@chris,所以网页是否仍然在一个被深深埋在窗口中被遗忘的标签中打开并不真正有意义 - 所以你需要JS magic-wannabe **和**,因此,不可避免地,JS会定期或根据需要向服务器发送状态更新(并且服务器必须注意自从JS最后一次发送它为“用户实际上**活动**在这个页面上“状态更新)。 – 2009-10-29 05:52:22

1

最简单的(而且他在流量方面最轻量级)可以跟踪页面上的mousemove/keyup事件。例如,在鼠标上次移动1分钟之内,您可以确定用户实际上正在网站上做某些事情(例如,不会在午餐时间让您的窗户打开)。

相关问题