我有一个非常简单的长轮询ajax调用,如下所示:
(function poll(){
$.ajax({ url: "myserver", success: function(data){
//do my stuff here
}, dataType: "json", complete: poll, timeout: 30000 });
})();
Run Code Online (Sandbox Code Playgroud)
我刚刚今天下午选了这个例子,看起来效果很好.我正在使用它在我的页面上构建一些html,它几乎是瞬间我尽力而为.我有点担心,这会让我的服务器上的工作线程保持打开状态,如果我在服务器上有太大的负载,它就会完全停止.有人能否对这一理论有所了解?在后端我有一个webapi服务(.net mvc 4),它调用数据库,构建对象,然后将对象传回.在我看来,为了使这个工作,服务器将不得不不断地调用数据库...这可能是不对的???
我的下一个问题是客户端确定是否需要更新页面上的html的最佳方法是什么?目前我正在使用JSON.stringify()将我的对象转换为字符串并比较字符串和旧字符串,如果有一个delta,它会在页面上重写html.现在不是一个整体在对象下降很多,但它可能会变得非常大,我认为进行字符串比较可能在客户端上非常耗费资源......特别是如果它几乎不断地进行.
对我来说,底线是这样的:我不确定轮询的工作时间有多长.我只是用Google搜索并找到了上面的示例代码并实现了它,从表面上看,它很棒.我只是担心它会让事情变得糟糕down(在服务器上)和我将旧结果与new进行比较的方式会降低(在客户端上).
我们非常感谢您提供的任何和所有信息.
TIA.