在AJAX中处理增量服务器响应(在JavaScript中)
我有AJAX应用程序,它根据服务器响应更新页面. AJAX服务器响应所基于的命令需要很长时间才能生成完整响应,但它会在计算后立即发送部分信息.该部分响应/部分信息以“突发”发送,并且每个突发的时间和大小是不可预测的.将命令输出流式传输到Web浏览器(到AJAX请求)的CGI脚本(在Perl中)已启用autoflush.
服务器响应基于外部命令的输出. ‘time cmd> / dev / null“平均给出大约10.0秒,’time cmd | head> / dev / null’给出小于0.1秒(例如数据).所有数据都是单次调用此外部命令的结果. 情况如下所示(ASCII-art图如下): client | | server --------- --------- request - -> /- response / . / . / /- . <-/ / . / . / /- [end] <-/ / / / <-/ 我对这个问题有几个问题. 注意:服务器端在Perl中作为CGI脚本完成,我更愿意看到(也)解决方案而不使用像jQuery这样的JavaScript库/框架. > AJAX应用程序服务器端使用的命令输出是基于行的.每组行以一种定义的行开头,以其他类型的行结束,由独立和不可更改的数据组成.我应该只是将命令的响应作为’text / plain’传输并在客户端使用JavaScript进行处理,还是应该在服务器上预处理数据,并使用’application / json’mimetype将整个数据块作为JSON发送? 即使是部分回应也会有所帮助.
我认为
Comet是您解决方案所需的一部分.另外(如果我说得对),可以查看由Dojo Foundation实施的
Bayeux Protocol.
整个事情仍然很新(虽然有些可能是第一次HTML5实现). 除此之外,您可能必须实施轮询方法.另一个问题是,客户端JavaScript解释器可以处理多少数据.您是否有可能以某种方式“分页”您的数据,这样您就不会遇到处理请求处理的问题,而其他响应已经存在? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |