小编tal*_*of9的帖子

如何在不使用setInterval/timeout的情况下检查实时更新?

建立一个社交网络,我正在尝试获取实时通知.目前,该站点使用setInterval每隔几秒发送一次AJAX请求.它看起来像这样:

setInterval ( function(){
    url = base_dir+"/ajax/file.php";
    data = "data=someData";
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: "json",
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(JSON){
            // retrieve data here   
        }
    });
}, 5000);
Run Code Online (Sandbox Code Playgroud)

这完全有效,但我非常担心创建服务器过载.我尝试了彗星技术但由于某种原因它发送的请求比上面的代码多得多.有没有其他更有用的技术来推送这些数据?

编辑:为了实现长轮询我使用了以下(使用此处提到的示例:http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery):

(function poll(){
    url = base_dir+"/ajax/file.php";
    data = "data=someData";
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: "json",
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/json;charset=UTF-8");
            }
        },
        success: function(JSON){
            // retrieve data here   
        },
complete: …
Run Code Online (Sandbox Code Playgroud)

javascript ajax comet

9
推荐指数
1
解决办法
2699
查看次数

标签 统计

ajax ×1

comet ×1

javascript ×1