如何解决res.write() 正在发送连接数据
我正在使用一个快速节点服务器,我想在客户端以块的形式接收响应。但我正在接收连接数据,就像我在服务器端和每个索引处都有一个循环一样,我正在像这样执行 res.write(index)
for(let index = 0; index <= 10; index+){
res.write(index)
}
但不是在每次收到响应时在客户端获取单个索引,而是将所有先前的响应连接起来,例如第一次我得到 1.第二次我得到 12.第三次我得到 123 等等。 在客户我收到这样的资源
axios.post(url,body,{
onDownloadProgress: progressEvent => {
const dataChunk = progressEvent.currentTarget.response;
//chunky response here
//here i am getting concatenated data
);
},timeout: 600000
})
.then((response) => {
//final response here
})
解决方法
服务器的流可以以它认为合适的任何方式聚合块,并且客户端也可以自由地缓冲它们,因此您不会以这种方式获得每条消息的语义。有关您可能遇到的其他问题的示例,请参阅此 SO 问题:How to flush chunks of arbitrary sizes in NodeJS
如果您希望向客户端发送单独的消息,您有多种选择:
- 使用可流式传输的数据格式,例如 YAML(带有文档分隔符)或 XML(以及客户端上的流式解析器)
- 使用更合适的协议:Server-Sent Events 或 WebSocket
- 使用跨传输消息传递库,例如
socket.io
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。