Я пытаюсь разработать сервер на ПК для удаленного выполнения измерений.Я решил попробовать сделать это в реакции, что оказалось гораздо сложнее для меня, чем я думал вначале.
У меня есть один файл сервера (server.js), один компонент App.js и файл html.В файле server.js я запускаю скрипты на python, которые выполняют измерения.Скрипт python сохраняет график в файл (img) каждые несколько секунд, и я хотел бы отображать его на веб-странице всякий раз, когда появляется обновленное изображение.
В настоящее время я использую Python Shell для запуска скрипта, он отлично работает для отправки аргументов скрипту, и я также могу отображать некоторые отзывы, используя res.send(args)
.Проблема в том, что я не могу использовать функцию renderDOM
в файле сервера, и именно так я рендеринг всех других вещей на странице, которую я создал в файле App.js.
Я попытался создать компонент Showresults.js, который использовал «RenderDOM» для рендеринга изображения, но, очевидно, это отрисовывалось только один раз, потому что я не могу вызвать его из server.js.Очень неприятно не понимать, как запустить рендеринг без нажатия кнопки.
Структура файла App.js
class App extends React.Component{
constructor(props){
super(props);
this.state = {
mystate: ""
}
}
this.handle_state = this.handle_state.bind(this);
handle_state(event){
this.setState{( mystate = event.target.value )}
render(){
return(
<div>
<button onclick={handle_state}>Click me</button>
</div>
});
}
}
ReactDOM.render(App, document.getElementById('root'));
Структура файла Server.js
var express = require('express');
var app = express();
app.get('/myscriptpath', function (req, res) {
var pythonProcess = Pythonshell.run('myscript.py', args);
pythonProcess.stdout.on('data', (data) => {
res.send(data);
});
});
Таким образом, res.send
отображает распечатки из сценариев Python, но как это сделать?Я действительно обновляю страницу новой картинкой из файла несколько раз?Если я не могу сделать компонент, который отображает изображение, и вызвать его в server.js?Я буду очень рад за любой ответ.