ws-sdk 错误监控

105 阅读2分钟

背景

由于后续ws-sdk的使用场景和业务越来越多,方便数据监控以及问题排查,通过sentry接入异常处理机制。 本质上其实就是做两件事儿:

  1. 将异常改为提示信息。
  2. 将异常输出到异常日志中查看错误信息。

异常分类

  1. 逻辑错误:逻辑错误是最难被追踪的错误类型。这些错误是由于程序运行的逻辑上出现错误,从而导致你的脚本程序并不能得到你想要的结果。
  2. JavaScript自带错误:这是最为常见的错误类型,例如发生JavaScript的语法错误、代码引用错误、类型错误等,JavaScript的引擎都会自动触发这些错误。
  3. 开发者主动抛出的错误:一般都是开发者为了满足自己的需求所定义出的错误

业务流程

综上,主要是有以下业务过程:

  1. 鉴权 (成功、失败)
    1. 组装数据(1. 压缩 2. 加密 3. 组装数据包)
    2. 发送鉴权消息
  2. 接收消息
    1. 解析数据包(1. 解压缩 2. 解密 3.二进制转字符串)
    2. 回执(见上图2.3,3种情况)
  3. 发生错误
  4. 断开连接
    1. 发生错误(断线重连超出最大限制)而关闭
    2. 客户端主动关闭连接

抛出异常

通过JS内置对象Error作为上报模型。通过throw语句来抛出自定义的异常。

throw new Error(...);

Error对象

Error(message, options)

可选参数说明如下:

  • message:错误信息描述
  • options:属性对象
    • cause:指定错误的具体原因

异常

业务异常

错误名称错误描述
CloseConnection断开连接(OUT_RANGE - 超出连接最大次数 INITIATIVE - 客户端主动断开连接 )
AuthFail鉴权失败

错误异常

自定义异常:

错误名称错误描述
EncryptionError加密错误
DecryptionError解密错误
DeflateError压缩错误
InflateError解压缩错误
packError组装数据包错误
onErrorwebsocket由于连接发生一些错误事件(例如无法发送一些数据)而被关闭时等