资讯专栏INFORMATION COLUMN

小程序网络最大并发限制解决思路

JerryWangSAP / 1763人阅读

摘要:小程序关于请求的限制默认超时时间和最大超时时间都是的最大并发限制是个网络请求的不可设置。其格式固定为,其中为小程序的,为小程序的版本号,版本号为表示为开发版体验版以及审核版本,版本号为表示为开发者工具,其余为正式版本。

小程序关于request请求的限制

默认超时时间和最大超时时间都是 60s

request、uploadFile、downloadFile 的最大并发限制是 10 个

网络请求的 referer header 不可设置。其格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。

小程序进入后台运行后(非置顶聊天),如果 5s 内网络请求没有结束,会回调错误信息 fail interrupted;在回到前台之前,网络请求接口调用都会无法调用。

有时候业务上需要同时请求10个以上的链接,针对这种情况需要延迟后续的请求,等当前请求完结后再去执行后续的请求

解决思路
达到并发限制数量之后,延迟之后的请求,待之前的请求结束,再去发送之前延迟的请求

缓存当前请求的数量

// 使用闭包缓存当前的请求量
var req = (function(){
    var count = 0;
    var counter = function() {
        count--;
    };
    return function(fn) {
        if (count < 10) {
            count++;
            fn(counter);
        } else {
            setTimeout(req.bind(null, fn), 300);
        }
    };
})()

模拟20个异步事件

var a = function(fn){
    // 假设所有的异步事件都是2s后完成 
    setTimeout(()=>{
        console.log(new Date().getTime().toString().slice(-4))
        // 此处fn是req中的counter,在异步事件执行之后,释放其所占用的count
        fn()
    },2000)
   }
var b = Array.from({length:20});

b.map(()=>req(a))

结果验证

可以看到前10个请求与后十个请求是间隔2s之后才发出的,即将请求十个一组分开,这样就避免了10个并发请求限制下,请求丢失的问题

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95859.html

相关文章

  • 物联网高并发编程之单台服务器最大并发TCP连接数

    摘要:对端,通过增加内存修改最大文件描述符个数等参数,单机最大并发连接数超过万甚至上百万是没问题的,国外公司在产品环境中已做到万并发 [TOC] 前言 曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。 我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用...

    leap_frog 评论0 收藏0
  • 程序图片合成:异步并发渲染→同步阻塞渲染

    摘要:故事开始了,小程序图片合成真机测试时,会报错。所以只能将异步并发改为同步阻塞式渲染。 showImg(https://segmentfault.com/img/remote/1460000013228074); 故事开始了,小程序canvas图片合成 真机测试时,会报错:getImageInfo failed 。也就是说,我这边异步请求50张图片,每张图片都是通过getImageInf...

    zhoutao 评论0 收藏0
  • 分布式系统关注点——想通关「限流」?只要这一篇

    摘要:之前有了解到哥的一部分读者们没有充分搞清楚限流和熔断的关系。后者表示系统在同一时刻能处理的最大请求数量,比如次的并发。后续限流策略需要设定的具体标准数值就是从这些指标中来的。限流阈值不继续处理请求。 如果这是第二次看到我的文章,欢迎扫描文末二维码订阅我哟~本文长度为2869字,建议阅读8分钟。 可能你在网上看过不少「限流」相关的文章,但是z哥的这篇可能是最全面,最深入浅出的一篇了(容我...

    CollinPeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<