在简单的javascript中实现长拉/comet无需XSS框架
我有自己的精简脚本,目前根据浏览器支持使用XHR或脚本标记。这些请求最终返回一些JSON。我的问题是,现在这个对象的元素需要在客户端上由服务器更新,也就是说,我需要实现某种长拉/彗星解决方案 谷歌似乎利用各种框架(如JQuery等)推出了很多解决方案。。在客户端执行此操作。然而,这不是我的选择在简单的javascript中实现长拉/comet无需XSS框架,javascript,jquery,comet,long-polling,Javascript,Jquery,Comet,Long Polling,我有自己的精简脚本,目前根据浏览器支持使用XHR或脚本标记。这些请求最终返回一些JSON。我的问题是,现在这个对象的元素需要在客户端上由服务器更新,也就是说,我需要实现某种长拉/彗星解决方案 谷歌似乎利用各种框架(如JQuery等)推出了很多解决方案。。在客户端执行此操作。然而,这不是我的选择 我想知道你们对我如何扩展现有的方法以允许从服务器进行comet风格的更新有什么建议。标准方法之一似乎是使用隐藏的iframe。这是不可能的,因为为我提供json数据的应用程序服务器与实际的Web服务器不同
我想知道你们对我如何扩展现有的方法以允许从服务器进行comet风格的更新有什么建议。标准方法之一似乎是使用隐藏的iframe。这是不可能的,因为为我提供json数据的应用程序服务器与实际的Web服务器不同。jQuery只是简单地包装了XHR/XMLHTTPRequest对象。 首先,您需要一个小函数以跨浏览器的方式返回对象。这是在3行或更少,不是太难。也就是说,这些是修复不同浏览器问题(如内存泄漏)的优秀代码片段。我强烈建议你使用。这些当然跨越3条线以上(除非缩小)。但无论哪种情况,如果你想要重复连接,你都不能从头开始 接下来,在服务器端,假设您使用的是PHP:
set_time_limit(300); // force connection only after 5 minutes
ignore_user_abort(false); // if the connection ends, terminate immediately
while(true){
if(some_condition()){
echo some_response();
break; // break the loop
}
sleep(2); // wait for a second or two
}
客户端,只要在连接结束时重复查询即可。此时,还要处理输出
客户端示例:
function poll(){
jQuery.get('http://somesite.com/poll.php',function(data){
alert('Just received: '+data);
poll(); // repeat poll
});
}
poll(); // begin polling
jQuery只是简单地包装了XHR/XMLHTTPRequest对象。 首先,您需要一个小函数以跨浏览器的方式返回对象。这是在3行或更少,不是太难。也就是说,这些是修复不同浏览器问题(如内存泄漏)的优秀代码片段。我强烈建议你使用。这些当然跨越3条线以上(除非缩小)。但无论哪种情况,如果你想要重复连接,你都不能从头开始 接下来,在服务器端,假设您使用的是PHP:
set_time_limit(300); // force connection only after 5 minutes
ignore_user_abort(false); // if the connection ends, terminate immediately
while(true){
if(some_condition()){
echo some_response();
break; // break the loop
}
sleep(2); // wait for a second or two
}
客户端,只要在连接结束时重复查询即可。此时,还要处理输出
客户端示例:
function poll(){
jQuery.get('http://somesite.com/poll.php',function(data){
alert('Just received: '+data);
poll(); // repeat poll
});
}
poll(); // begin polling
Christian,你能详细说明一下我是如何在客户端实现你所说的吗?请看我修改后的代码。虽然在jQuery中,转换为纯javascript应该很容易。Christian,你能详细说明一下我如何在客户端实现你所说的内容吗?请参阅我修改的代码。尽管在jQuery中,转换为纯javascript应该很容易。