当前位置: 首页 > news >正文

南京专业网站设计公司价格施工企业平台

南京专业网站设计公司价格,施工企业平台,画图标网站,天津正规网站建设调试公司最近为了做一些网络上的优化,所以就得提前埋点,为后续网络优化提供数据支持。 主要是对发起请求埋点,请求错误埋点,客户端请求耗时埋点。 事件上报到阿里云,接入的是阿里的应用实时监控服务。 网络请求使用的是OhHttp…

最近为了做一些网络上的优化,所以就得提前埋点,为后续网络优化提供数据支持。
主要是对发起请求埋点,请求错误埋点,客户端请求耗时埋点。
事件上报到阿里云,接入的是阿里的应用实时监控服务。

网络请求使用的是OhHttp + Retrofit ,现在很多都是这么实现的了吧。
网络的埋点切入口,很容易就想到了 Interceptor,用起来了才觉得 Interceptor 是真的香,以前还只是觉得这个设计模式是真好。用到了才感觉是太香了。

上代码:

class ReportingInterceptor(val source: ACRSource) : Interceptor {private val gson = Gson()override fun intercept(chain: Interceptor.Chain): Response {val request = chain.request()val url = request.url.toString()AlibabaCloudRumUtil.requestStart(source, snapshots = url)val startTime = System.currentTimeMillis()val response = chain.proceed(request)AlibabaCloudRumUtil.requestCost(source,snapshots = url,System.currentTimeMillis() - startTime)// 判断是否是 HTTP 错误if (!response.isSuccessful) {AlibabaCloudRumUtil.requestFail(source,snapshots = url,params = AlibabaCloudRumUtil.errorMap(response.code.toString(),response.message))} else {val source = response.body?.source()source?.request(Long.MAX_VALUE)try {val buffer = source?.buffer// 业务错误逻辑上报val result = gson.fromJson(buffer?.clone()?.readString(Charset.forName("UTF-8")),BaseModel::class.java)if (result?.code != 0) {AlibabaCloudRumUtil.requestFail(ACRSource.COROUTINE,snapshots = url,params = ResultException("${result.code}",result?.message ?: "Unknown error").toMap())}} catch (ex: Exception) {AlibabaCloudRumUtil.requestFail(ACRSource.COROUTINE,snapshots = url,params = BusinessException.handlerException(ex).toMap())} finally {source?.close()}}return response}
}

网络请求上报是带上了URL,现在的Retrofit 的URL 在其他地方是真的不好拿,这 Interceptor 确实方便的很。
而网络耗时也比较容易,在
val response = chain.proceed(request)
前后记录时间就可以了,虽然跟抓包数据显示的网络耗时有差距,但是我们毕竟只是粗略的统计而已。
错误上报的话,包括了 http 请求错误和 code != 0 的业务数据错误,都是需要上报的。

如果需要在其他地方拿到 URL ,需要在 Interceptor 里处理,重新 new 一个 Response 返回,然后把 URL 塞到 Header 里面,在其他地方把 Header 中的 URL 读取出来。但是会产生一点性能开销,毕竟每个请求都需要 new 一个新的 Response 。

http://www.yayakq.cn/news/25869/

相关文章:

  • 招聘网站排行榜2021wordpress自然志下载
  • 做网站方案山东网站营销seo哪家好
  • 什么是开放式的网站企业建网站一般要多少钱
  • 南京网站开发南京乐识权威自学it怎么入门
  • 娄底市建设局网站lamp做网站的论文
  • 网站页面设计 8种常见的网站版面布局形式制作公司网站设计手绘
  • 高质量摄影作品网站运城seo招聘
  • 江苏网站建设 博敏网站正规抖音代运营公司排名
  • 怎么修改php网站wordpress内页锚文本
  • 可以做宣传海报的网站萍乡网站建设行吗
  • 做壁纸壁的网站有什么电商哪个平台好
  • 自己怎么建个网站赚钱吗服务网站建设企业
  • 做网站英文怎么说seo基础入门教程
  • 合肥专业做网站公司有哪些百度在成都有分公司吗
  • 环保网站设计滨州聊城网站建设
  • 网站构建是什么网站备案审核通过后
  • 网站域名一年多少钱企业官网怎么做
  • 58同城盐城网站建设北京做百度网站建设
  • 企业网站备案资料朔州市住房与城乡建设厅网站
  • 用ps切片做网站昆明app制作公司在哪里
  • 商丘做微信网站sqwyy大学网站建设宣传方案
  • 织梦旅游网站模板旅游景点网站建设方案
  • 开厂做哪个网站比较好如何在wordpress中添加背景音乐
  • 定西兰州网站建设中国建筑装饰网饶明富
  • 西安做网站选哪家公司校园网站建设途径
  • 如何替换网站大连建站平台
  • co域名 大网站学校的网站怎么做的
  • 做动态效果的网站网站管理员怎样管理员权限设置
  • 贵阳网站设计案例莱芜网络推广公司排行
  • 梧州网站推广方案做网站和做系统的区别