堆栈溢出技术推送消息


stackoverflow technology to push message?

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

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

我建议使用事件源,与 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);
}