私は大学のプロジェクトを大気質監視システムにしています。そのデータ(ある整数値など)はセンシングユニットからウェブページに取り込まなければなりません。私はPhpを使用してクライアントから別のクライアントにデータをプッシュ
はこのURL http://localhost/AQProject/recordupdate.php?val=2
で呼びかけスクリプトがコンテンツを表示するWebページを更新していることです欲しい
。今私は、データベースにそのデータを保存し、更新を確認するために2秒ごとにajaxベースのクエリを実行することができますが、私はその更新プログラムをサーバーにプッシュしたい。私がやっていること
は:
私はServer sent events
を試してみました。ここで私は
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
if($_SERVER["REQUEST_METHOD"]=="GET")
{
if(empty($_GET["val"])) die ("Empty Value from source");
else
{
$v = $_GET['val'];
echo "data: The Pollution stub value is {$v}".PHP_EOL;
ob_flush();
flush();
}
}?>
を試してみましたが、HTMLは、私は考え出した、今すぐスクリプト
<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("recordupdate.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data +
"<br>";
};
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script>
を持っているものだ。このくらいの別のクライアントが(センシングときので、それは動作しません(私は間違っている場合私を修正)することをユニット)は、recordupdate.php
をウェブページクライアントが呼び出すものとは異なるスクリプトのインスタンスとして呼び出します。
server sent events
を使用してこれを行う方法はありますか?または、私は絶対にWebSocket、node.jsなどを掘り下げる必要があります。事前にお礼します。
しかし、データが実際に別のクライアントから流れることになる参照は、二重接続はありませんそれは、全二重接続を開くよりも簡単でなければなら –
ブラウザのHTTP経由でのみ送信することができます。リクエストを受け取り、回答を受け取ることはできません。例はhttps://habrahabr.ru/post/209864/をご覧ください。単純なPHPサーバとjsクライアントの例があります。 –