2012-07-21 22 views
0

我想將RSS提要更新推送到HTML5桌面通知,如果用戶在Chrome中打開了我的網站,用戶將收到這些通知。我收集我需要做的事情(有人比我更聰明地在概述中解釋了這一點) - 創建一個服務器端組件,它將輪詢Feed以獲取更新;然後可能將它們存儲在數據庫(?)中。然後,客戶端組件將檢查更新並使用HTML5通知API顯示它們。如何將RSS源推送到HTML5通知?

是否有人確認,並且如果可能的話,幫助我瞭解更多的細節,以便我可以追蹤我需要的各種位以使其工作?非常感激。

+0

RSS源來自哪裏? – 2012-07-21 16:22:57

+0

嗨,我自己的WordPress博客......歡呼聲 – 2012-07-22 13:13:35

回答

1

我打算假設你使用的是jQuery,並且你不介意使用插件。在這種情況下,我們將使用jFeed插件來解析RSS代碼。

// Desktop notifications are only available on WebKit browsers, for now, so only carry out 
// notifications if the API is available. 
if (window.webkitNotifications) { 

    // Just a piece of data to determine whether 1) the page just loaded, and 2) there are any 
    // new elements in the feed. 
    var lastTime = null; 

    // This is to check if you have permissions to display notifications. Usually, the 
    // checkPermissions method only returns a number. 0 being that you don't have permission 
    // to display notifications, yet. 
    if (window.webkitNotifications.checkPermissions() <= 0) { 
     // If you don't have permission, then get the permission from the user. 
     window.webkitNotifications.requestPermission(callback); 
    } 

    // The code below will run every thirty seconds. 
    setInterval(function() { 
     // What we want to do here is carry out an AJAX request to check for changes in the RSS 
     // feed only if we have permission to display notifications. Otherwise, what's the point 
     // of checking for changes if the user doesn't want to know? 
     if (window.webkitNotifications.checkPermissions() > 0) { 
      $.jFeed({ 
       url: 'urltofeeds', 
       success: function (feed) { 
        // Looks at the latest item's time, and checks to see if it's any different 
        // than what we have in memory. 
        if (lastTime !== feed.items[0].updated) { 

         // If so, determine whether we recorded the time, or not. 
         if (lastTime !== null) { 
          // If we did record the time, that means there are new content from 
          // the last time we checked. 
          window.webkitNotifications() 
         } 

         // Update the last time. 
         lastTime = feed.items[0].updated; 
        } 
       } 
      }); 
     } 
    }, 30000); 
} 

我猜我需要做下面的(有人比我在概述解釋了這個聰明得多) - 創建一個服務器端組件,這將輪詢更新的飼料;然後可能將它們存儲在數據庫(?)中。

聽起來像你的朋友描述long-polling。對於像博客這樣簡單的東西,這是一種完美主義者的方法。

簡單的輪詢將是同樣的事情。區別在於,通知只會在每個輪詢間隔中顯示,而不是瞬間顯示。