首页 > 解决方案 > 使用node.js rest api在客户端发送数据可以每5s完成一次吗?

问题描述

我想每 5 秒使用 node.js 向客户端发送数据。这是我要发送以进行实时定位的坐标数据。我使用 mqtt 客户端、firebase 实时数据库来存储和检索数据并使用颤振来显示实时位置。我的问题是如何将每 5 秒的数据从 node.js 发送到客户端

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
var http = require('http');


const port = process.argv.slice(2)[0];
const app = express();
app.use(bodyParser.json());


const mqtt = require('mqtt')
const client = mqtt.connect('mqtt://broker.hivemq.com')
var firebase = require('firebase');
const server = http.Server(app)

//fetching data from firebase realtime database
function readDatas() {
  let coordinateData = new Array()
  
  loraRef.on('value', (snapshot) => {
    snapshot.forEach(childSnapshot => {
      coordinateData.push(childSnapshot.val().message);
      // console.log('ok');    
   },
   );
  });

//inserting data  into firebase realtime database
function insert_message(topic, message, packet) {
  loraRef.push({
    message
  })
}

//inserting data from mqtt into firebase realtime database
function mqtt_messsageReceived(topic, message, packet) {
    if(message){
      let messageObject = JSON.parse(message)
    insert_message(topic, messageObject, packet)
    }
    

  };
client.on('message', mqtt_messsageReceived)
//sending data to http client
let dataCoordinate = readDatas()
app.get('/coordinate', async(req, res) => {
  console.log('Returning coordinate list');
  
  
  
  if(dataCoordinate.length !==0){
    res.send(dataCoordinate[0]);
    
    //res.sendStatus(dataCoordinate)
    console.log(readDatas()[0]);
  }
  
});

标签: node.jsmqtt

解决方案


推荐阅读