我有一个Express.js服务器,其路由负责解析和导入CSV文件。
我想将实时导入过程的状态报告给用户的浏览器。
来自Express.js的流式响应很简单:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "home/env/local/lib/python2.7/site-packages/nltk/probability.py", line 1705, in __init__
for (cond, sample) in cond_samples:
ValueError: too many values to unpack (expected 2)
通过CURL向端点发送HTTP请求按预期工作。在上面的例子中有两个流式响应 立即收到,然后在两秒钟后收到最终答复。
然而,浏览器(Chrome)并非如此。使用jQuery render() {
return (
<div> // the wrapper div
<div style={{height: '100%','background-color': 'gray'}}></div>
</div>);
}
和原始XHR调用进行测试,整个
当响应完成时,响应似乎被缓冲并立即返回。
这种通讯方式通常如何处理?我假设socket.io是一个选项,但肯定有一个更简单 如何在浏览器的XHR或XHR2功能中进行构建?
答案 0 :(得分:2)
您可以向客户端返回引用ID,客户端调用正确的http api来收集该csv处理请求的状态。您可能需要一些后端支持来启用此功能。类似于数据库中可以跟踪此状态的某些表。
router.get( '/test', function( _req, _res, _next ) {
SaveFile(_res.file).then(function(id) {
_res.end(JSON.stringify({id: id});
});
});
router.get( '/status', function( _req, _res, _next ) {
GetStatus(_res.params.id).then(function(status) {
_res.end(JSON.stringify(status));
});
});
否则,如果您仍想要实时,请使用websockets。您可以设计出您期望的沟通方式。