4.0.0 • Published 2 years ago

sky-tower v4.0.0

Weekly downloads
38
License
-
Repository
-
Last release
2 years ago

SkyTower相关工具库(sky-tower-jssdk)代码仓库

最新可用版本@4.0.0,安装方式(3.0.0之前版本已经废弃):

npm install skytower@4.0.0

@4.0.0 新功能:新增异常事件上报、页面性能信息上报

可用版本@3.0.0,安装方式(3.0.0之前版本已经废弃):

npm install skytower@3.0.0

@3.0.0 新功能:原服务器已经到期,之后数据上报将整体迁移到新的服务器上,此次版本修改主要配合服务迁移做一些改动。

可用版本@2.0.0,安装方式:

npm install skytower@2.0.0

@2.0.0 新功能:该版本skytower已支持可记录项目的pv、uv信息

第一版@1.0.0(该版本不支持上报用户访问记录!!!),安装方式:

npm install skytower@1.0.0

该版本为skytower可用的第一版本,使用该版本的项目不会上报pv、uv信息。若有pv、uv数据上报需求,请安装最新版本

线上地址

       sky-tower线上地址:https://www.npmjs.com/package/sky-tower

简介

       sky-tower-jssdk是一个npm包,内部封装了网络库,用于上报打点数据。前端项目以npm包的方式接入sky-tower-jssdk,并在代码中加入打点,即可SkyTower监控平台上查看相关数据。
       SkyTower监控平台的数据是由业务方前端上报的。上报时,SkyTower监控平台本可以暴露接收事件上报的接口给业务方,由业务方往接口上报数据,但是这么做就过于灵活了。所以一种更好的做法是封装一个网路库给业务方使用,业务方打点数据的上报只需要调用这个网络库即可,所以SkyTower维护了这么一个jssdk工具库,业务方在前端工程里以npm方式引入,并在代码中使用该工具库暴露出的方法来上报数据,这些方法都在Emitter对象之下,Emitter的功能:

  • 提供用于发射用户行为信号的方法。当用户触发某个行为事件时,将上报相关参数:项目信息、用户信息、事件名称、时间、地理位置、机型、手机系统、页面版本号、网络类型、ip地址等参数。
  • 提供用于发射计数信号的方法。当用户触发某个计数事件时,将上报相关参数:项目信息、用户信息、事件名称等参数。接口每接收到一个计数事件,就后自动计数+1,用于统计事件发生的次数。
  • 提供用于发射请求参数、响应参数的信号的方法。将请求参数、响应参数和对应的用户信息上报,可以对某个用户的请求进行单点追查。

本地开发调试发布上线流程

  • 安装相关依赖
npm install
  • clone下来的仓库依赖安装不成功?将package-lock.json删除再试试
  • src下coding,更新feature,更新readme,本地调试,自测通过
  • package.json下更新本次发布的版本号
{
  "name": "sky-tower",
  "version": "0.0.6", // 本次发布的版本号为0.0.6
  ...
}
  • 全局安装rollup
npm install --global rollup
  • 使用rollup打包
rollup -c
  • 发布上线
npm publish --access=public

如何使用

以npm方式引入

npm install skytower

init方法 初始化SkyTower

字段名类型含义枚举值/如何获取
pidstring项目id/页面idSkyTower监控平台上创建项目后得到的project_id
uidstring区分不同的用户,用户统计uv,追查问题用户自定义
import { init } from 'skytower';

// init方法一般在constructor或者componentDidMount里调用
init({
    pid: '987456',
    uid: this.state.user_id
});

emitter对象

emitter.emitActionEvent 上报用户行为事件

字段名类型含义枚举值/示例
eventstring事件名称'click_bottom_button'
locationstring地理位置'北京市海淀区'
device_brandstring机型'XIAO MI'
app_versionstring页面版本号'8.2.5'
system_versionstring系统版本号'9.2.0'
clientstring客户端类型'Android'
net_typestring网络类型'4G'
ip_addressstringip地址'10.157.168.235'
extraobject自定义参数{ env: 'dev' }
typestring事件类型(自动上报,不需要手动传)'action'
timenumber时间id(自动上报,不需要手动传)1606497817532
pidstring项目id(自动上报,不需要手动传)'987456'
uidstring用户id(自动上报,不需要手动传)'16678923465'
import { emitter } from 'skytower';

// 这些参数不是必传的
emitter.emitActionEvent({
    event: 'click_bottom_button',
    location: '北京市海淀区',
    device_brand: 'XIAO MI',
    app_version: '8.2.5',
    system_version: '9.2.0',
    client: 'Android',
    net_type: '4G',
    ip_address: '10.157.168.235',
    extra: {
        env: 'dev'
    }    
});

emitter.emitCountEvent 上报计数事件

字段名类型含义枚举值/示例
eventstring事件名称'image_upload'
typestring事件类型(自动上报,不需要手动传)'count'
timenumber项目id(自动上报,不需要手动传)1606497817532
pidstring项目id(自动上报,不需要手动传)'987456'
uidstring用户id(自动上报,不需要手动传)'16678923465'
import { emitter } from 'skytower';

emitter.emitCountEvent('image_upload');

emitter.emitReqEvent 上报请求事件

字段名类型含义枚举值/示例
apistring接口地址'xxx/getUserInfo'
querystringget请求参数'user_id=987234&&user_name=secretttt&&user_type=vip'
request_bodystringpost请求参数'{"user_id": "987234", "user_name": "secretttt", "user_type": "vip"}'
typestring事件类型(自动上报,不需要手动传)'req'
timenumber项目id(自动上报,不需要手动传)1606497817532
pidstring项目id(自动上报,不需要手动传)'987456'
uidstring用户id(自动上报,不需要手动传)'16678923465'
import { emitter } from 'skytower';

emitter.emitReqEvent({
    api: 'xxx/getUserInfo',
    query: 'user_id=987234&&user_name=secretttt&&user_type=vip'
});

emitter.emitReqEvent({
    api: 'xxx/updateUserInfo',
    request_body: '{"user_id": "987234", "user_name": "secretttt", "user_type": "vip"}'
});

emitter.emitRespEvent 上报响应事件

字段名类型含义枚举值/示例
is_successboolean成功false
is_errorboolean失败false
apistring接口地址'xxx/getUserInfo'
respobject返回参数'{ err_no: 0, err_msg: 'success'}'
typestring事件类型(自动上报,不需要手动传)'resp'
timenumber项目id(自动上报,不需要手动传)1606497817532
pidstring项目id(自动上报,不需要手动传)'987456'
uidstring用户id(自动上报,不需要手动传)'16678923465'
import { emitter } from 'skytower';

const getUserInfo = async () => {
   const { user_id } = this.state;
   const { status, data = {} } = await getUserInfo(user_id);
   
   if (status === 0) {
     // 请求成功上报
     emitter.emitRespEvent({
        api: 'xxx/updateUserInfo',
        resp: data,
        is_success
     });
   } else {
     // 请求失败上报
     emitter.emitRespEvent({
        api: 'xxx/updateUserInfo',
        resp: data,
        is_error
     });
   } 
}
4.0.0

2 years ago

3.0.0

2 years ago

2.0.0

3 years ago

1.0.0

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago

0.0.0

3 years ago