所以我试图测试这个使用jquery进行长轮询的应用程序来查询用node.js编写的服务器。长轮询代码是
(function poll(){
$.ajax({ url: "http://localhost:3000/test",
success: function(data){
alert(data);
}, dataType: "html", complete: poll, timeout: 100000});
})();
服务器端代码实际上相当简单,如下所示。
var http = require('http').Server(app);
app.get('/test', function(req, res){
res.setHeader('Access-Control-Allow-Origin','*');
setTimeout(function(){
res.send(JSON.stringify({"msg":"stuff"}));
},10000);
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
所以这个想法很简单我编写了一个客户端js库,它使用jquery来长时间轮询服务器并在服务器发送一些数据时显示一些数据。服务器真的可以用任何东西编写吗?我已经使用node.js来快速进行测试。这适用于Firefox和Chrome,但它在IE中不起作用。
仅供参考,我已经更改了代码并删除了特定于我的应用程序的所有代码,因为实际上没有必要发布一些非常长的代码。
具体来说,我使用的是IE10。
我已阅读此post并将缓存设置为false似乎对我不起作用。我甚至无法得到第一个请求。
答案 0 :(得分:-1)
对于IE,您可能希望更改代码以设置超时以调用自身,而不是依赖于ajax调用中的超时/完成。这可能会解决它。
另外,在每个调用的URI上添加一个简单的唯一值。所以尝试这样的事情:
(function poll() {
$.ajax({ url: "http://localhost:3000/test?date=" + Date.now(),
success: function(data) {
alert(data);
}, dataType: "html"
});
setTimeout(poll, 100000);
})();
答案 1 :(得分:-1)
可能是jQuery的AJAX中的一个错误。向服务器和客户端添加一些console.log()语句,看看IE是否发送与流行浏览器相同的数据。