Звуковые оповещения (ajax)

2.75K
.
The Fast, Secure and Professional - Yii2
reaper, А ты мог бы показать как работает WebSockets на примере оповещений или тому подобному?
.
Rakovskiy, http://habrahabr.ru/post/79038/ С 2009 года думаю не много изменилось.
Разве что в PHP появился Ratchet, который позволяет очень просто написать свой WebSocket сервер.
.
Rakovskiy
The Fast, Secure and Professional - Yii2
reaper, А, что нужно для протокола ws?
.
reaper
Rakovskiy, Как понять? На бэкэнде нужен сервер, который понимает WebSocket протокол и может взаимодействоать с клиентом на фронтенде.
В последних версиях большинства браузеров есть поддержка веб-сокетов. А где нет, могут эмулироваться с помощью Flash или лонг пулов. Только для этого придётся подключать сторонние библиотеки.

Из вики:
Google Chrome (начиная с версии 4.0.249.0);
Apple Safari (начиная с версии 5.0.7533.16);
Mozilla Firefox (начиная с версии 4);
Opera (начиная с версии 10.70 9067);
Internet Explorer (начиная с версии 10);
.
The Fast, Secure and Professional - Yii2
reaper, Я про настройку WS протокола на сервере
.
# Folour (07.12.2014 / 19:47)
Сравнивай время последнего запроса новых сообщений. Что-бы не повторялось.
на пыхапе я еще могу понять как сделать но не на джава скрипт..
.
Rakovskiy
The Fast, Secure and Professional - Yii2
Fublin, Если на аяксе хотите, то вот моя реализация

var message_total = parseInt($("#count-messages").text());
var message_timeout = 3000;

function count_messages(){
    $.post("/messages.php", function (total){
        total = parseInt(total);
        var audio = new Audio();
        audio.src = '/themes/default/audio/message.wav';
        message_total = message_total ? message_total : 0;

        if (!total || total < 1){
            $("#count-messages").remove();
        }else if (total && total != message_total){
            if (total > message_total){
                audio.play();
            }
            $("#messages").html('<span id="count-messages" class="count"><total>' + total + '</total></span>');
            $("total").hide();
            $("total").slideDown(300);
        }
        message_total = total;
    });
}

$(document).ready(function (){
    setInterval('count_messages()', message_timeout);
});



html
<a href="#">
            <i id="messages" class="count-item fa fa-envelope"></i>
        </a>


Могу дать пример, в личке
.
Rakovskiy, если я правильно понял, то тут как фейсбуке оповещения.. То есть считаются все оповщения и выдается просто сылка со счетчиком...?
То есть надо делать или страничку с оповещениями или еще что ?
.
The Fast, Secure and Professional - Yii2
Fublin, message.php отдает количество новых сообщений
.
# Rakovskiy (13.12.2014 / 21:44)
reaper, Я про настройку WS протокола на сервере
А что там настраивать? Есть вариант проксировать через nginx или haproxy, а можно просто голый порт наружу вытащить и всё. Я вот у себя пока что не вижу смысла проксировать, потому клиенты коннектятся напрямую к PHP.
Всего: 101