【问题标题】:How to send data which arrived on post endpoint through io.emit? NodeJS + React如何通过 io.emit 发送到达 post 端点的数据? NodeJS + 反应
【发布时间】:2021-08-22 11:25:01
【问题描述】:

我是 MERN 世界的新手,我需要您的帮助。 我正在用 ReactJS 中的图表构建一个小型仪表板应用程序。此应用每 5 秒从 Node.js 服务器接收数据。我想象我的工作流程是这样的:

  1. 服务器正在接收来自 NodeRED 的 POST 请求数据,
  2. 当 POST 请求被触发时,我想获取请求正文并通过 io.emit 将其发送到客户端组件。这是我尝试过的,但它不起作用......
.
.
.
let variable1 = 0; <-initial value

io.on("connection", (socket) => {
  console.log("Client connected");
  io.emit("event1", {name: "Test", value: variable1});
    
  socket.on("disconnect", () => {
    console.log("Client disconnected!");
  });
});

const postMeasurement = async (req, res, next) => {
  const { value } = req.body;
  variable1=value;
.
.
.

提前感谢您的时间和帮助。

【问题讨论】:

    标签: node.js reactjs websocket socket.io


    【解决方案1】:

    首先,使用io.emit创建事件

    io.on('connection',(socket)=>{
      console.log('Client Connected');
      io.emit('myevent','data_goes_here');
      socket.on('disconnect',()=>{console.log('Client Disconnected')});
    });
    

    现在在您的常规 JS 文件中:

    var dataGotten;
    // recieve event
    socket.on('myevent',(data)=>{
      dataGotten=data;
    });
    

    现在发送回你的 nodejs 文件:

    // data comes back in parameter
    socket.on('myevent',(data)=>{
      dataGotten=data;
      socket.emit('gottenEvent',true);
    });
    

    为了从 socket.io 收集数据,我们还使用了socket.on:

    io.on('connection',(socket)=>{
      console.log('Client Connected');
      io.emit('myevent','data_goes_here');
      socket.on('disconnect',()=>{console.log('Client Disconnected')});
      socket.on('gottenEvent',(isTrue)=>{
        if(isTrue){
          console.log('Client Successfully Recieved Message!');
        }
      }
    });
    

    【讨论】:

      【解决方案2】:

      您没有发出事件。

      io.emit("event1", {name: "Test", value:new_value});
      

      现在您将发出具有正确值的事件。 现在,您可以选择如何实现常规调用。 最简单的是 setInterval ,

      setInterval(async()=>{
       let res = await POST_API_CALL_TO_NODE_RED;
        io.emit("event1", {name: "Test", value:res.body.val});
      },5000)
      

      【讨论】:

        猜你喜欢
        • 2019-11-15
        • 2013-09-19
        • 2018-12-23
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        相关资源
        最近更新 更多