【发布时间】:2022-02-09 04:50:20
【问题描述】:
我想显示一些来自树莓派的传感器数据(使用 python socketio)作为前端反应,我使用 nodejs 作为后端。数据当前显示在控制台(nodejs)中,但我似乎无法弄清楚它将如何在反应中显示。很抱歉这个基本问题,但我似乎找不到合理的方法来实现这个。这是我的树莓派、节点和反应代码。
#raspberrypi code
import asyncio
import socketio
sio = socketio.AsyncClient()
@sio.event
async def connect():
print('connection established')
@sio.event
async def message(data):
print('message received with ', data)
await sio.emit('fromAPI', {'msgFromPy': 'my response'})
@sio.event
async def disconnect():
print('disconnected from server')
async def main():
await sio.connect('http://localhost:5000')
await sio.wait()
if __name__ == '__main__':
asyncio.run(main())
Nodejs 代码
const io = require("socket.io")(5000);
io.on("connection", socket => {
// either with send()
console.log('Connected');
socket.send("Hello!");
// handle the event sent with socket.send()
socket.on("fromAPI", (data) => {
console.log(data);
socket.emit("fromAPI", data);
});
});
});
下面是反应代码
import React, { useState, useEffect } from "react";
import socketIOClient from "socket.io-client";
const ENDPOINT = "http://localhost:5000";
function App() {
const [response, setResponse] = useState("");
useEffect(() => {
const socket = socketIOClient(ENDPOINT);
socket.on("fromAPI", data => {
setResponse(data);
});
}, []);
return (
<p>
It's {response.msgFromPy}
</p>
);
}
export default App;
我应该怎么做才能在反应中显示来自节点的数据。我的反应也没有任何错误。感谢您的帮助
【问题讨论】:
标签: python node.js reactjs socket.io raspberry-pi