说一说项目中你遇到的难点和解决过程

110 阅读2分钟

1、配合解决

A.web端腾讯IM下发消息导致页面卡顿

问题表现:

web端当秒级涌入大量用户, 会卡顿

解决思路:

对于页面卡顿一般是线程占用, 内存过载情况, 在大量用户进入聊天室,im会下发每个用户进入聊天室的消息, 上万消息同时下发, 对于手机内存小的手机会造成内存过载, 同时下发时间太长用户交互功能无法调用主线程,所以页面卡顿, 联系了腾讯im的研发工程师, 提供其解决思路, 秒级下发大量消息, 整合为多消息数组, 而非单消息数组, 同时对消息进行控制, 只下发部分消息, 其他存放在消息队列中, 采用requestIdelCallback在浏览器不忙的时候循环消息队列, 保证聊天室消息更加持久可运营

2、我解决

A: 小程序直传阿里云oss问题

问题表现:

小程序直传oss在手机上无响应, 抓包定位到请求报403

解决思路:

1、检查文件上传格式是否正确(写一个上传自己服务器的demo, 验证没问题)

2、检查是不是服务器给的阿里云上传参数错误(使用服务器API上传,验证没问题)

3、检查是不是上传参数问题, 改写formdata上传写法, 严格按照文档顺序, 报错信息改变(对参数进行排查得知, 顺序不一致, 存在参数依赖解密关系, 所以顺序必须保证)

4、接口无返回,增加了callback参数, 接口报错400

5、对于文档上没有的参数, 通过源码和文档相结合增加, 成功解决

B: umi-max对umi-requst的污染

问题表现:

在项目中登录接口采用rsa加密, 加密后的传输服务无法解密

解决思路:

1、对密钥进行验证(服务端验证两个密钥正确可进行解密)

2、对传输过程进行排查(前端新建ajax请求传输, 没有问题)

3、问题出在了request中, 分析源码得出( rsa传输过去的是字节数组, 经过umi-request会将字节数组转化为字符串, 所以服务端接收数据会把“”也代入解密,因此错误, 所以要对request进行重写, 对request的option原值赋值到请求体中, 最后得以解决)