stackoverflow技术推送消息?

时间:2012-05-11 20:05:59

标签: javascript php ajax websocket push-notification

当我在顶部菜单中显示通知时出现一个小图标,现在我正试图弄清楚SOF是如何做到这一点的。我认为它可以使用AJAX每秒检查服务器,这是有道理的,但有1000+用户它会超载我认为的服务器,有人可以告诉我,如果我是对的,让我知道如何使用技术像SOF一样实时推送而不破坏服务器

2 个答案:

答案 0 :(得分:4)

您应该考虑使用WebSocket技术。它适用于最新的浏览器(Chrome,Firefox和Safari),并允许服务器将更改推送到浏览器。但是,Internet Explorer不支持它,因此对于该浏览器,Ajax轮询几乎是唯一的选择。

答案 1 :(得分:0)

我建议使用事件源,与AJAX Comet不同,没有长期保持开放连接,因此您更有能力处理更多客户。

/* Event Source Code */
// Initial Startup
if (!!window.EventSource) {
    var source = new EventSource('EventSource.php');
    // Native EventSource Events
    source.addEventListener('open', function(e) {
        // Connection was opened.
    }, false);
    source.addEventListener('error', function(e) {
        if (e.readyState == EventSource.CLOSED) {
            // Connection was closed.
        }
    }, false);
    source.addEventListener('message', function(e) {
        // You'll have to make your own banner function here.
        // e.data, this is what you'll need.
    }, false);
}