簡體   English   中英

跟蹤實時通知發送給用戶的最佳方法是什么?

[英]What's the best way to keep track of live notifications to send to a user?

我為jQuery使用了類似咆哮的插件,向用戶發送實時消息以共享網站上的活動。 目前,我僅使用自用戶上次訪問該網站以來發生的通知來更新用戶。 但是,當我在站點上打開多個選項卡時,由於輪詢請求很長,只有某些選項卡會收到通知,因為一個選項卡可以在其他選項卡獲得通知之前刷新通知。

實現通知系統的最佳方法是什么,其中每個選項卡將同時顯示消息? 也許還可以保持持久性,以便即使用戶導航到另一個頁面,通知也將在頁面上停留15秒鍾?

謝謝。

您可以將window.localStorage對象用作選項卡/窗口之間共享的通知的緩沖區。 為了確保跨瀏覽器的兼容性,您還可以使用store.js庫,而不是直接處理localStorage。

因此,您可以通過網絡套接字或任何其他方式將通知發送給客戶端,處理程序會將通知推送到此緩沖區。 說這將是一個數組

[
    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集合中注銷當前窗口。 並且,如果在當前窗口取消注冊后窗口集合變為空,則可以清空通知緩沖區。 當然,這是一個簡短的解決方案,也許您需要考慮在所有窗口關閉之前從緩沖區中刪除已棄用(由所有窗口處理)的通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM