在简单的javascript中实现长pull / comet,没有框架需要XSS
implementing long pull / comet in simple javascript no frameworks require XSS
我有自己的精简脚本,目前根据浏览器的支持使用XHR或脚本标签。这些请求最终返回一些JSON。我的问题是现在这个对象的元素现在需要由服务器更新,而在客户端,即我需要实现一些长拉/彗星soln。
Google似乎使用各种框架(如JQuery等)提出了许多解决方案。要在客户端执行此操作。然而,这不是我的选择。
我想知道你们是否有任何建议,我如何扩展我现有的方法,以允许从服务器进行comet风格的更新。标准方法之一似乎是使用隐藏框架。这是一个不去为我提供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
}
客户端,只要在连接结束时重复查询即可。此时,还要处理输出。
Clients-side例子:
function poll(){
jQuery.get('http://somesite.com/poll.php',function(data){
alert('Just received: '+data);
poll(); // repeat poll
});
}
poll(); // begin polling
相关文章:
- 如何防止在使用.val()时引入XSS漏洞
- 在play2框架中向json对象添加下拉列表项
- 如何在离子框架+有角度的框架中制作顶部标签
- 如何在另一个html文件的框架中包含图像
- 如何重置内嵌框架
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- XSS通过地址栏注入
- 用于图像和基于浏览器的图表的图表框架
- 没有装饰的小型浏览器框架
- 如何照顾CSRF&单页应用程序中不使用cookie的XSS攻击
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- Chrome开发工具中使用了哪些框架和库
- 闭包js框架-将ArrayBuffer转换为字符串
- 类似于Prism的Knockout js框架
- 在其他javascript框架模板中运行angular指令
- JS应用程序中基于DOM的XSS保护
- 使用HTML5 JS框架进行本地存储
- 发布到iframe-在iframe而不是父框架中呈现的页面
- 框架集+列IE10
- 在简单的javascript中实现长pull / comet,没有框架需要XSS