UNPKG

hc-web-log-mon

Version:

基于 JS 跨平台插件,为前端项目提供【 行为、性能、异常、请求、资源、路由、曝光、录屏 】监控手段

123 lines (114 loc) 2.81 kB
import express from 'express' const app = express() // import { join } from 'path' // import { readFile } from 'fs' import pkg from 'body-parser' import coBody from 'co-body' const { json, urlencoded } = pkg app.use(json({ limit: '100mb' })) app.use( urlencoded({ limit: '100mb', extended: true, parameterLimit: 50000 }) ) app.all('*', function (res, req, next) { req.header('Access-Control-Allow-Origin', '*') req.header('Access-Control-Allow-Headers', 'Content-Type') req.header('Access-Control-Allow-Methods', '*') req.header('Content-Type', 'application/json;charset=utf-8') next() }) app.get('/getList', (req, res) => { console.log('req.query', req.query) res.send({ code: 200, data: [1, 2, 3] }) }) app.post('/setList', (req, res) => { res.send({ code: 200, meaage: '设置成功' }) }) let allTracingList = [] let baseInfo = {} app.get('/getBaseInfo', (req, res) => { res.send({ code: 200, data: baseInfo }) }) app.post('/cleanTracingList', (req, res) => { allTracingList = [] res.send({ code: 200, meaage: '清除成功!' }) }) app.get('/getAllTracingList', (req, res) => { const eventType = req.query.eventType if (eventType) { // const data = JSON.parse(JSON.stringify(allTracingList)).reverse() const data = JSON.parse(JSON.stringify(allTracingList)) res.send({ code: 200, data: data.filter(item => item.eventType === eventType) }) } else { res.send({ code: 200, data: allTracingList }) } }) app.post('/trackweb', async (req, res) => { try { let length = Object.keys(req.body).length if (length) { // 数据量大时不会用 sendbeacon,会用xhr的形式,这里是接收xhr的数据格式 allTracingList.push(...req.body.eventInfo) } else { // 兼容 sendbeacon 的传输数据格式 const data = await coBody.json(req) if (!data) return allTracingList.push(...data.eventInfo) baseInfo = data.baseInfo } res.send({ code: 200, meaage: '上报成功!' }) } catch (err) { res.send({ code: 203, meaage: '上报失败!', err }) } }) // 图片上传的方式 app.get('/trackweb', async (req, res) => { try { let data = req.query.v if (!data) return data = JSON.parse(data) allTracingList.push(...data.eventInfo) baseInfo = data.baseInfo res.send({ code: 200, data: '上报成功' }) } catch (err) { res.send({ code: 203, meaage: '上报失败!', err }) } }) app.listen(3351, () => { console.log('Server is running at http://localhost:3351') })