【发布时间】:2011-01-30 17:58:53
【问题描述】:
在 SO,当您的问题得到答案时。或者你有新的徽章,事件被触发。或者当您在论坛中获得新的 PM 时,它也会通过提醒消息让您知道。
当您在此事件后第一次进入网站时,您会看到您的帐户发生问题的消息。
这是如何实现的?脚本如何知道它们有新的东西要向您展示?
【问题讨论】:
在 SO,当您的问题得到答案时。或者你有新的徽章,事件被触发。或者当您在论坛中获得新的 PM 时,它也会通过提醒消息让您知道。
当您在此事件后第一次进入网站时,您会看到您的帐户发生问题的消息。
这是如何实现的?脚本如何知道它们有新的东西要向您展示?
【问题讨论】:
您正在寻找的编程技术称为Comet。维基百科的链接描述了它的一些实现,但最简单的方法是创建一个具有较长超时的 XMLHttpRequest,并且只返回更改数据。
【讨论】:
作为对您上一条评论的回答
有几种技术可以将事件标记为“新”。它可以是数据库表中的另一个字段,布尔类型:告诉用户是否显示事件。或者 - 最简单的一个 - 只是将上次用户访问的时间记录在会话中,然后将所有即将发生的事件的时间与其进行比较。
【讨论】:
当其他人对您的答案或问题进行投票等操作时,就会发生该事件。这是在服务器端记录的。
当您登录该站点时,可以通过在数据库中查找这些记录来确定在您离开时发生了一些事件。
当您在网站上时,页面可能会定期轮询服务器以进行更改。所以它并不是真正触发事件的服务器。
【讨论】: