跟踪发送给用户的实时通知的最佳方法是什么?

时间:2010-01-28 09:33:27

标签: javascript javascript-events jquery notifications

我正在使用类似咆哮的插件为jQuery发送实时消息给用户以共享网站上的活动。现在我只更新用户自用户上次访问网站以来发生的通知。但是,当我在站点上打开多个选项卡时,由于长轮询请求,只有部分选项卡会收到通知,因为选项卡可以在其他选项卡获取之前刷新通知。

实施通知系统的最佳方法是什么,其中每个标签会同时显示消息?也许还要保持一定程度的持久性,这样,即使用户导航到另一个页面,通知也会在页面上停留15秒?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用window.localStorage对象作为选项卡/窗口之间共享的通知的缓冲区。 为确保跨浏览器兼容性,您还可以使用store.js库而不是直接处理localStorage。

因此,您可以通过Web套接字或以任何其他方式将您的通知发送到客户端,处理程序将把它们推送到此缓冲区。 假设这是一个类似

的数组
[
    notification1,
    notification2
    // etc.
]

用户打开时,每个窗口(选项卡)都应在localStorage中注册,如:

{
    wnd_<timestamp_of_window1_onload_event>: 1
    wnd_<timestamp_of_window2_onload_event>: 1
}

在每个窗口(选项卡)中,您可以使用window.setInterval函数每N毫秒检查一次新通知的缓冲区。 setInterval调用的函数将从缓冲区读取新通知并显示它们。 在window.onbeforeunload处理程序中,您将从localStorage中的Windows集合中取消注册当前窗口。如果在当前窗口取消注册后窗口的集合变空,则可以清空通知缓冲区。 当然,这是一个简短的解决方案,也许您需要考虑在所有窗口关闭之前从缓冲区中删除已弃用(由所有窗口处理)的通知。