请求监控
为了实现小程序网络请求的无痕埋点,我们需要通过劫持原始的网络请求方法,获取需要上报的数据,最后再执行原始的方法。
微信小程序监控也是通过劫持微信官方抛出全局对象的方法,由于小程序的运行环境并没有window和document对象,它只暴露了一个wx全局对象,比如我要拦截页面的ajax请求,在web端重写window.XMLHttpRequest和fetch,在微信小程序端则需要重写wx.request。
接口的监控统计,主要是请求参数、请求方式、状态,耗时等,也就是刚才所说的一些耗时,从请求发出一刹那的时间点,到请求拿到的数据推进,整个耗时情况
微信小程序常见的网络请求有:
- wx.request
- wx.downloadFile
- wx.uploadFile
小程序不能直接分享到朋友圈,我们一般采用的方法是将小程序码绘制成canvas图片,然后保存到手机相册,再以图片的形式来分享朋友圈。上传图片或canvas上的元素时,采用wx.uploadFile方法来上传,然后绘制对应文件的tempFilePaths缓存,这时我们可以监控wx.uploadFile的fail回调函数。当我们要把绘制好的图片保存到相册时,使用wx.downloadFile方法,这里也是监控这个方法的fail回调函数。
故,原理示意如下所示:
js
const originRequest = wx.request;
Object.defineProperty(wx,'request',{
configurable: true,
enumerable: true,
writable: true,
value: function(){
//执行监控代码
//...
//执行原始请求对象
return originRequest.apply(this,arguments);
}
});