web开发自用exprss 本地api代理

21 阅读1分钟

// const express = require('express')
// const expressWs = require('express-ws')
// const proxy = require("http-proxy-middleware").createProxyMiddleware
import express from 'express'
import expressWs from 'express-ws'
import { createProxyMiddleware } from 'http-proxy-middleware'
import { getEventList, getEventDetail } from './src/data/eventList.js'
import { dirname } from "node:path"
import { fileURLToPath } from "node:url"

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);


const proxy = createProxyMiddleware
let app = express()
app.use(express.json())

const appws = expressWs(app)
let list = []
//ws
app.ws('/xx/sockjs/xx.ws', (ws, req) => {
  ws.send('3000连接成功')
  ws.on('message', (msg) => {
    console.log('ws:msg', msg);
    let clients = appws.getWss('xx.ws').clients
    clients.forEach(function(client) {
      let data = { msg }
      list.push(data)
      // if (Object.prototype.toString.call(msg) === '[object Object]') {
      //   data = JSON.stringify(msg)
      // }
      client.send(JSON.stringify(data))
      // setTimeout(() => { client.send(msg) }, 60000)
      if (list.length === 1000) {
        client.send('close')
        client.close()
        list = []
      }
    });

  })
})

// =======示例=============
// app.post('/web/screen/event/getEventList', function(req, res) {
//   const data = {}
//   res.json({ code: "0", data })
// })

app.get('/web', function(req, res) {
  const data = {
    "path": "http://10.185.212.42:3003/web",
  }
  res.json({ code: "0", data })
})
//获取图片
app.get('/src/assets/img/*', function(req, res) {
  console.log('req', req.url)
  res.sendFile(__dirname + "/" + req.url);
  console.log("Request for " + req.url + " received.");
})
//post获取参数
app.post('/web/web/screen/event/getEventList', function(req, res) {
  const processStatus = req.body.processStatus
  let list = getEventList
  if ([0, 1, 2, 3].includes(processStatus)) {
    list = list.filter(item => item.processStatus == processStatus)
  }
  const data = {
    list,
    total: list.length,
  }
  res.json({ code: "0", data })
})

//get
app.get('/web/web/screen/event/getEventDetail', function(req, res) {
  let data = getEventDetail
  const id = req.query.id
  if (id) {
    const item = getEventList.find(item => item.id == id)
    data = { ...data, ...item }
  }
  res.json({ code: "0", data })
})







// =====================

let webProxy = proxy({
  secure: false,
  changeOrigin: true,
  ws: true,
  target: '',
  pathRewrite: {},
  headers: {
  
    'X-Requested-With': 'XMLHttpRequest',
    Cookie: '',
  },
})


app.use('^/web/', webProxy)


app.listen(3003)