收藏
回答

reqeust onChunkReceived 数据被截断了

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug request 微信iOS客户端 8.0.51 3.5.5

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

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

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

回答关注问题邀请回答
收藏

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
    有用
    回复
登录 后发表内容