收藏
回答

wx.cloud.callContainer 是否支持 chunked 方式接收响应 ?

目标:想要通过 wx.cloud.callContainer 调取云托管服务上的 http API(chunked)

小程序Base Library: 2.33.0

现状:

  1. 当前在本地开发环境(本地小程序 调用 本地后台服务器):使用 wx.request 获取到 RequestTask 对象,然后 requestTask.onChunkReceived(),是可以实现前后端之间的 chunked 调用传输的;
  2. 但当 后端部署到微信云托管服务器上之后,云托管服务公网域名”仅只能用于测试,不能用于生产“,不能配置成小程序的服务器域名,因此 wx.request 无法调用。

因此想要改用小程序的 wx.cloud.callContainer API,但不知如何通过 wx.cloud.callContainer 获得 RequestTask 对象,用以支持 onChunkReceived ?或者 wx.cloud.callContainer 是否有其他方式支持 chunked?

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

2 个回答

  • 连雨不知春去
    连雨不知春去
    03-20

    请问楼主最终如何解决的呀?我现在也是碰到这个问题了,头大

    03-20
    有用
    回复
  • Young nbe
    Young nbe
    2023-08-31

    wx.cloud.callContainer API 不直接支持 chunked 传输方式。它是基于云函数调用的,云函数本身不支持 chunked 传输方式。

    如果你需要在小程序中使用 chunked 传输方式,可以考虑以下两种方案:

    1. 在云托管服务器的公网域名上部署你的后台服务器,然后使用 wx.request 来调用。这样你就可以使用 RequestTask 对象的 onChunkReceived 方法来处理 chunked 传输。
    2. 将你的后台服务器作为一个云函数发布,然后在小程序中使用 wx.cloud.callContainer 来调用这个云函数。在云函数中,你可以使用微信提供的飞蟹传输库(feiplashay)来实现 chunked 传输。但是需要注意的是,飞蟹传输库只能在云函数中使用,不支持在小程序的其他地方使用。

    如果你需要在云托管服务器的公网域名上部署你的后台服务器,但是无法配置成小程序的服务器域名,你可以考虑使用反向代理来解决。你可以在云托管服务器的公网域名上部署一个反向代理服务器,将所有请求转发到你的后台服务器。这样你就可以在后台服务器上使用 wx.request 来调用,并且仍然可以使用 RequestTask 对象的 onChunkReceived 方法来处理 chunked 传输。

    <p>

        <a href="https://www.pycac.com/post/334684.html" target="_self" style="color: rgb(255, 255, 255); text-decoration: underline;"><span style="color: #FFFFFF;">宠物百科</span></a>

    </p>


    2023-08-31
    有用
    回复 2
登录 后发表内容