如何使用Socket.io,node.js发出传感器流式传输的响应

我有一个URL,该URL从诸如温度和湿度的传感器流式传输数据。现在,如果我的API使用socket.io在特定路由上进行了调用,则需要获取数据流,并将其显示在客户端仪表板上的图形中。我对如何从传感器的URL中获取响应以及如何在仪表板上显示为图表感到困惑。以下是我的示例代码,该示例代码作为json对象连续返回日期,小时,分钟和秒。我想获得传感器数据的动态响应,作为json对象流式传输到套接字发射函数中。

const express = require('express');
const app = express();
const port = 3000;
var url = require('url');
var fs = require('fs');
const server = require('http').createServer();
var link = "http:www.xample.com/usr/api/data/:deviceId";
server.listen(port,function(){
    console.log("Server Listening on port: "+port);
});

const io = require('socket.io')(server);
io.on('connection',function(socket){
setInterval(function(){
    socket.emit('date',{
        'date': new Date().getDate(),'hour': new Date().getHours(),'minutes': new Date().getMinutes(),'seconds': new Date().getSeconds()
    });           
},1000);

socket.emit("welcome","Socket Connection is successful!");
});

const iot = require('socket.io-client');
let socket = iot.connect("http://localhost:3000");
socket.on("date",function(data){
    console.log(data);
});

socket.on("welcome",function(data){
    console.log("Connection Status: ",data);
});
yxsong1972 回答:如何使用Socket.io,node.js发出传感器流式传输的响应

我强烈建议您阅读Socket.io Client API DocsServer API Docs

可以从以下代码开始的示例代码:

Client.js:

import React,{useState} from 'react';
import io from 'socket.io-client';

let socket;

const Client = () => {

    const [temperature,setTemperature] = useState(0);
    const [humidity,setHumidity] = useState(0);

    if (!socket) {
        socket = io('https://localhost:8080',{
            path: '/sensorInfo' 
        });

        socket.on('temperatureChange',(value) => {
            setTemperature(value);
        });

        socket.on('humidityChange',(value) => {
            setHumidity(value);
        })
    }

    return (
        <div>
            <p>The temperature logged is: {temperature}</p>
            <p>The humidity logged is: {humidity}</p>
        </div>
    );

}

export default Client;

Sensor.js:

const handleTemperatureChange = (v) => {
    let temperature = v;
    socket.emit('temperatureChange',{temperature});
}

const handleHumidityChange = (v) => {
    let humidity = v;
    socket.emit('humidityChange',{humidity});
}

这绝对不是一个完整的解决方案,因为它确实取决于您的系统设计,但希望它足以入门。

本文链接:https://www.f2er.com/3157022.html

大家都在问