websocket的简单使用

207 阅读1分钟

模拟两台无人机飞行的数据

const WebSocketServer = require('ws').Server
const wss = new WebSocketServer({ port: 8181 }) // 服务端口8181
wss.on('connection', ws => {
  console.log('服务端:客户端已连接')
  ws.on('message', message => {
    //打印客户端监听的消息
    console.log(message)
  })
})
let data1 = {type: 4, payload: {
  displacement: 0,
  droneBattery: {charge: 64, current: -1542, temperature: 0, voltage: 15600},
  droneId: 2,
  droneName: "精灵4P V2",
  pilotId: 2,
  fc: {attitude: {pitch: 0, roll: 0, yaw: 0}, velocity: 0},
  gps: {latitude: 24.434655268, longitude: 118.1150297251551, height: 1},
  rc: {signal: 5, charge: 38, gps:{latitude:24.434656,longitude:118.115023,height:10}}
}}
let data2 = {type: 4, payload: {
  displacement: 379,
  droneBattery: {charge: 64, current: -1542, temperature: 0, voltage: 15600},
  droneId: 3,
  droneName: "御2 行业版",
  pilotId: 3,
  fc: {attitude: {pitch: 0, roll: 0, yaw: 0}, velocity: 0},
  gps: {latitude: 24.434985268, longitude: 118.1150497251551, height: 1},
  rc: {signal: 5, charge: 38, gps:{latitude:24.430618,longitude:118.115174,height:10}}
}}
let data3 = {type: 4, payload: {
  displacement: 379,
  droneBattery: {charge: 64, current: -1542, temperature: 0, voltage: 15600},
  droneId: 4,
  droneName: "御3 企业版",
  pilotId: 4,
  fc: {attitude: {pitch: 0, roll: 0, yaw: 0}, velocity: 0},
  gps: {latitude: 24.434985268, longitude: 118.1150497251551, height: 1},
  rc: {signal: 5, charge: 38, gps:{latitude:24.43498413,longitude:118.1150443,height:10}}
}}
wss.on('connection', ws => {
  let sendClientData = ws => {
    data1.payload.gps.latitude += 0.00004
    data1.payload.gps.longitude += 0.00004
    data1.payload.gps.height += 1
    data1.payload.rc.signal += 1
    data1.payload.displacement += 1
    data1.payload.droneBattery.charge += 1
    // data3.payload.gps.latitude -= 0.00005
    ws.send(JSON.stringify(data1))
    // ws.send(JSON.stringify(data3))
  }
  let sendClientData1 = ws => {
    data2.payload.gps.longitude += 0.00003
    data2.payload.rc.gps.longitude += 0.000008
    data2.payload.rc.gps.latitude += 0.000008
    ws.send(JSON.stringify(data2))
  }
  let timer = setInterval(() => {
    sendClientData(ws)
  }, 3000)
  let timer1 = setInterval(() => {
    sendClientData1(ws)
  }, 3000)
  let data4 = {type: 10, payload: {id: 2, name: '御2 行业版'}}//3
  let closeData = ws => {
    ws.send(JSON.stringify(data4))
  }
  setTimeout(() => {
    closeData(ws)
    clearInterval(timer)
  }, 30000)
})
const ws = new WebSocket('ws://localhost:8181')
ws.onmessage = e => {
  this.localOnMessage(JSON.parse(e.data))
}

localOnMessage (data) {
  console.log(data)
}