当我的顶部菜单中出现一个小图标时,现在我正在尝试弄清楚 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);
}