2012-04-27 42 views
5

我正在使用通過互聯網打開和關閉燈泡的小型Web應用程序。 如果指示燈亮起,它會顯示在指示燈圖像上,否則會顯示指示燈圖像。 我在這個程序中實現這個應用程序: 1-我在服務器上創建一個名爲lamp.html的HTML文件2-每5秒燈控制器電路發送http數據到一個PHP服務器應用程序,該應用程序接受數據並打開lamp.html文件並使用燈控制器收到的新數據重寫該html文件。 示例:如果指示燈亮起,則服務器應用程序會在lamp.html文件中寫入帶有ON指示燈圖像的圖像標籤,等等。 3-我從瀏覽器請求lamp.html文件。例如:http:mysite.com/lamp.html 該文件每5秒自動刷新一次。Web應用程序:html和php

實施過程是否很好? 是否有另一種方法,我可以使用http請求進行遠程控制?

+0

你可以直接從瀏覽器請求php而不是HTML嗎? – 2012-04-27 08:10:25

回答

0

如果燈打開或關閉,我會通過PHP腳本查看每個頁面請求,並根據結果顯示圖像。

<img src="/<?php echo (lamp_is_on() ? 'on' : 'off'); ?>.png"> 
+0

因此,您必須在某些文件或數據庫中保存燈的狀態,並且每次(在瀏覽器上)用戶請求燈的狀態時,您必須轉到數據庫並獲取狀態並將其發送回用戶。我建議將燈的數據寫入html文件,在這種情況下,任何數量的用戶都可以通過發送鏈接並獲取html頁面直接獲取數據。 – Hisham 2012-04-27 08:24:00

0

如果我做一個顯示燈的狀態的網頁...

  1. lamp.html
    應該有有兩個div。一個燈泡在圖像上,另一個燈泡關閉圖像。

  2. getLampInfo.php
    應該連接到你的燈控制器和回聲的0或1

  3. 數據在lamp.html調用getLampInfo.php每5秒和切換的寫一個AJAX腳本div的基礎上的迴應。

我不會處理文件覆蓋和東西。這一切似乎沒有必要。你的方法雖然會起作用,但絕對沒有錯。

希望這會有所幫助!

2

你有聽起來不錯的主意,但它有改進的餘地。但首先讓我們來看看它的一般設計:

enter image description here

簡化系統它實際上是不夠的,如果服務器存儲由燈傳送到一個文件中的最後一個值。您無需在每次更改時都呈現完整的HTML文件,只需修改文件中的單個字節即可。

另一方面,瀏覽器不需要每5秒刷新整個頁面。而是實施類似Stream Updates with Server-Sent Events這樣的事情,以便網絡服務器在燈泡更換時實際上告訴瀏覽器。然後瀏覽器可以通過javascript來改變圖片的URL和其他東西,這使它看起來好多了。

+0

聽起來不錯,我會閱讀你分享的鏈接,然後發送回覆...謝謝! – Hisham 2012-04-27 08:37:56

+0

這是一個很好的答案。好主意,好圖! – 2012-04-27 08:58:25

+0

似乎SSE不被所有的瀏覽器支持,我想要一些在個人電腦或手機上的任何瀏覽器支持的東西。第二個問題是我想進一步解決這個問題,所以很多用戶會在瀏覽器中使用自己的頁面進行遠程監控,所以我不明白的是服務器如何知道這些數據應該發送給這個用戶而不是其他?第三個問題,如果我想進行雙向通信,所以我可以控制燈並監視它的狀態,所以我需要像所有瀏覽器都不支持的websockets,所以你建議 – Hisham 2012-04-27 10:06:18