Как отправить RSS-канал в уведомления HTML5?

Я хочу отправлять обновления RSS-канала в уведомления на рабочем столе HTML5, которые пользователь получит, если мой сайт будет открыт в Chrome.

Я понимаю, что мне нужно сделать следующее (кто-то намного умнее меня объяснил это в обзоре) - создать компонент на стороне сервера, который будет опрашивать ленту обновлений; а затем, возможно, сохранить их в базе данных (?). Затем клиентский компонент будет проверять наличие обновлений и отображать их с помощью API уведомлений HTML5.

Кто-нибудь подтвердит это и, если возможно, поможет мне с более подробной информацией, чтобы я мог отследить различные биты, которые мне нужны для этой работы? Очень признателен.


person Michael Jones    schedule 21.07.2012    source источник
comment
Откуда берется RSS-канал?   -  person Sal Rahman    schedule 21.07.2012
comment
Привет, мой собственный блог Wordpress... ура   -  person Michael Jones    schedule 22.07.2012


Ответы (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);
}

Я понимаю, что мне нужно сделать следующее (кто-то намного умнее меня объяснил это в обзоре) - создать компонент на стороне сервера, который будет опрашивать ленту обновлений; а затем, возможно, сохранить их в базе данных (?).

Похоже, ваш друг описал длинный опрос. Это перфекционистский подход к такой простой вещи, как блог.

Простой опрос будет таким же. Разница в том, что уведомление будет отображаться только в каждом интервале опроса, а не мгновенно.

person Sal Rahman    schedule 29.07.2012