我试图使用ajax调用我的服务器上的流式端点。连接应该能够永久接受来自服务器的推送数据,但XMLHttpRequest似乎缓冲整个响应。我只想让浏览器客户端接收每个数据块一次并转到下一个数据块。如何防止XMLHttpRequest缓冲整个响应
有什么办法可以防止这种行为?
更新:似乎Firefox有能力通过设置XMLHttpRequest.responseType等于“moz-chunked-text”或“moz-chunked-arraybuffer”来支持此功能。不过在其他浏览器中不支持。无论如何,这可能不是最好的方法。
WebKit equivalent to Firefox's "moz-chunked-arraybuffer" xhr responseType
Ajax并非真正意义上的永久开放和多个消息传递。它可以完成,但你自己决定响应的哪一部分是* new *或者你需要定期回收连接([长时间轮询](https://en.wikipedia.org/wiki/Push_technology# Long_polling))。适合该角色的是[WebSockets](https://developer.mozilla.org/en-US/docs/WebSockets)。 –
流HTTP端点(没有websocket切换)因此不适合基于浏览器的客户端使用? – cachance7
换句话说,如果服务器数据以高频率进行流式传输,那么长时间轮询将会丢失数据。 – cachance7