使用Javascript的HTTP正文流
HTTP Body Streaming with Javascript
我正在编写一个调试/管理节点服务器,它允许用户在机器上执行长时间运行的进程。我想将子进程的输出流式传输到他们开始操作的形式。
我可以使用套接字来实现这一点,但我必须让客户端订阅一个通道,并且当消息只涉及一个客户端时,我必须向整个通道发布消息。
我更希望能够将http正文流式传输到客户端。使用node,我可以很容易地做到这一点:只需继续写入请求的套接字,完成后调用end。
有没有任何方法可以使用XhrHttpRequest来调用web服务,让它在新数据可用时触发事件,并在关闭时触发最终事件?是否可以使用jQuery?
请注意,这与普通实时更新的用例不同,套接字是一个不错的选择。这是一个单独的请求。我只想得到支离破碎的回应。
我所希望的是不可能的:你不能发出xhrhttp请求并保持它的打开状态,一次解析块。
以下是人们的建议摘要
- 无论如何都要使用socket.io,并更改您的体系结构以支持推送事件
- 使用socket.io,但通过它发出请求,就好像你在点击url一样。在socket.io的服务器端制作一个小的url路由器,并根据需要流式传输内容
- 保持初始html页面打开,并在进行解析时对其进行解析(对于我的实现来说不可行)
- (3) ,但在一个隐藏的iframe中
我选择了2。
作为这个问题的更新,现在,您可以使用Sever发送事件(SSE)。这样,您就不需要在服务器端做任何特别的事情,也不需要设置websocket,当您不需要全双工时,这就太过分了。XHR会将整个数据保存在内存中,这对于大文件来说并不理想。我也有同样的问题,我在这里回答了:
如何处理流式HTTP GET数据?
几年前,我在开放http响应上使用了"javascript"流。(ajax出现前几年)
这里的想法是:编写大块的
<script type="text/javascript">do js stuff here</script>
对于您希望客户端对流程的每一步做出反应。
它可能仍然有效。
相关文章:
- Angular 中的 HTTP 服务将 POST 数据作为请求正文的键发送,没有值
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- 从chrome扩展拦截HTTP请求正文
- http模块(node.js和browserfy的)没有't使用方法PATCH写入请求正文
- 节点 http.get 解析 JSON 正文
- 在触发特定 POST 请求时修改 HTTP POST 请求正文(post 参数)
- 如何在 NodeJS 中传递响应参数,包括来自 POST http.request 的正文
- UIWebView 中 PUT 或 POST 类型的 ajax 不传递 HTTP 正文
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 如何在 node.js 中将 HTTP 响应正文编码为 UTF-8
- 如何将包含对象而不是字符串的正文发布到 HTTP API?棱角2.
- jQuery:如何使用参数和正文发出http请求
- Chrome扩展-如何获取HTTP响应正文
- 使用Javascript的HTTP正文流
- JSON响应,包含http、头、元和正文
- 使用express&在服务器端解析AngularJS http.post数据;正文解析器
- http协议对正文大小有限制吗?
- 我如何在node.js的http PUT的正文中使用JSON
- 如何在HTTP请求的正文中发布这个-d
- 请求正文正在覆盖HTTP方法