收藏
回答

request enableChunked onChunkReceived 返回数据截断了?

代码片中中包含了简单的返回大数据后端( node_server.js)。这个服务会返回 1w 个a字符 ( { a: 'aaaaaa...' } ) 的 json 对象。

page/index 的onLoad 请求了这个服务,从 console log中可以看到这个完整的JSON数据在 onChunkReceived 回调中被截断返回了, 麻烦修复下,谢谢

启动返回大数据的server: node node_server.js

最后一次编辑于  09-10
回答关注问题邀请回答
收藏

1 个回答

  • 猫咪 sen sei
    猫咪 sen sei
    10-11

    解决了,这个问题需要遵循 http chunk 返回协议,即 需要返回一个 块大小 然后是数据。

    res.write(`${JSON.stringify(data).length.toString(16)}\r\n${JSON.stringify(data)}\r\n`);

    由于这个块大小表示的是下一个块的大小,所以需要先返回一个 空 数据 告知下一个块大小,然后才能正常取到(如果第一个块大小很大的话)

    Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。


    10-11
    有用
    回复
登录 后发表内容