好吧,我不知道哪种方法最有效.有人可以帮助我找到更好的算法.
好吧,让我们在用户发帖的时候采取像facebook这样的例子,它将更新给他的朋友而不需要任何页面刷新,我们通过ajax请求知道它.但我们怎么知道有人发布了新的东西呢?可能就像每2秒钟放一个计时器并发送一些表的ajax请求并检查某些用户是否发布了某些内容.但有没有办法没有设置计时器,因为每2秒执行一次操作可能会导致严重的服务器问题我是这么认为的?只是想知道是否有更好的方法而不是设置计时器?
任何帮助是极大的赞赏.
目前Facebook和谷歌采用的是一种名为
long polling的技术.
这是一个简单的系统,客户端向服务器发出AJAX请求.服务器接收请求并检查它是否具有请求所需的数据.如果不是,则请求保持打开但由服务器延迟.第二个服务器有数据,请求被处理并返回给客户端.
如果你打开Facebook,你会看到发布到Facebook的请求大约需要55秒才能完成.同样适用于Gmail和其他一些似乎有某种推送系统的网络应用程序.
以下是如何处理这些请求的简单示例:
>客户:
>初始AJAX请求,其时间戳为0
>服务器:
>通过检查服务器上数据的时间戳,将请求与时间戳0进行比较.假设服务器上的数据具有时间戳234.
>客户端戳记与服务器数据上的当前戳记不同,因此我们返回新数据.
>客户:
>客户端获取数据并立即发布带有时间戳234的新AJAX请求.
>然后我们处理新数据并适当更新网页.
>服务器:
>将带有时间戳234的请求与服务器上数据的当前戳记进行比较.
>邮票价值是相同的,所以我们去睡觉.
>服务器数据更新,戳记值现在是时间戳235.
>睡眠请求被唤醒并返回更新值.
您可以阅读更多现代更新现代机制的in-depth解释.