집에서 현재 온도를 표시하고 원하는대로 온도를 설정할 수있는 웹 사이트를 만들려고합니다. temp를 읽기 위해 raspberry pi zero와 python 코드를 사용하여 5 분마다 temp를 .txt 파일에 저장합니다. 문제는 내 웹 사이트의 현재 온도를 해당 파일에서 5 분 안에 읽어야한다는 것입니다. 다음을 사용할 수 있습니다.
<head> <meta http-equiv="Refresh" content="s" /> </head>
그러나 그것은 좋은 선택처럼 보이지 않으므로 자바 스크립트를 사용하고 파일에서 데이터를 읽을 수는 있지만. 불행히도이 기능은 .txt 파일에서 변경하고 웹을 새로 고치더라도 한 번만 작동하지만 출력은 여전히 동일합니다 (이전 데이터를 일종의 전역 변수에 저장하는 것처럼 보입니다).
function readTextFile()
{
var rawFile = new XMLHttpRequest();
rawFile.open("GET", 'text.txt', true);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var allText = rawFile.responseText;
alert(allText);
}
}
}
rawFile.send(null);
}
이 그림의 왼쪽에는 txt 파일 (php 사용)의 데이터가 있고 경고 처리기에는 javascript 및 제출 버튼을 사용한 데이터가 있습니다. 이러한 데이터는 동일해야합니다.
그래서 질문은 : 동적으로 변경 될 때 .txt 파일에서 읽을 수 있습니까? 그렇다면 어떻게 할 수 있습니까? 아니면 어떤 기능을 사용하여 할 수 있습니까? 저는 자바 스크립트를 잘 모릅니다. 도움을 주셔서 감사합니다.
XHR을 사용하여 정의 된 간격으로 레코드를 가져 오는 것은 좋은 해결책이 아닙니다. JavaScript EventSource API를 사용하는 것이 좋습니다. text/event-stream
정해진 간격 으로 수신하는 데 사용할 수 있습니다 . 여기에서 자세히 알아볼 수 있습니다.
https://developer.mozilla.org/en-US/docs/Web/API/EventSource
응용 프로그램의 경우 다음을 수행 할 수 있습니다.
var evtSource = new EventSource('PATH_TO_PHP_FILE');
evtSource.onmessage = function(e) {
//e.data contains the fetched data
}
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$myfile = fopen("FILE_NAME.txt", "r");
echo "data:". fread($myfile,filesize("FILE_NAME.txt"))."\n\n";
fclose($myfile);
flush();
?>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다