2010年12月9日 星期四

利用Channel API實作模擬Monitor功能


Demo : Default Monitor

寫在前頭

你會從這篇文章看到:

  • 與Channel API沾上一點點邊的小小Demo。
  • 在下很期待新一波家電革命所帶來的便利。

卻無法在這裡得到:

  • 學習Channel API相關內容。

Google App Engine發佈Version 1.4.0,提供Channel API可以輕易實作Compet概念。剛好逛到PubNub網站 ,才突發奇也想要利用Channel API弄個模擬Monitor功能,雖然~無法像PubNub可以在任何設備上,雙向傳送Message,不過~可以模擬監控各設備,即時回報目前使用狀態。


Client 和Server

  • Javascript Client

    主要負責三件事情,如下:

    1. 連接從Server取得該Channel的unique token。
    2. Listening該Channel的所有更新訊息。
    3. 丟更新訊息給Server,就可以傳遞訊息給該Channel的其他Client。

  • The Server

    Server則要負責,如下:

    1. 建立unique channel給個別的Client使用。
    2. 建立並傳送unique token給每個 Client,讓它們能connecting和listening該Channel。
    3. 接收從Client端POST過來的更新訊息。
    4. 透過Channel發送更新訊息至Client。

概述如何模擬

  • Click Start Monitor Button

    按下Start Monitor的Button後,就會在Client與Server之間,建立溝通管道,可以使用Chrome Browser,打開「開發人員工具」功能,從Resources->XHR看到互動情形,下圖是從Channel API截過來,說明Chanel建立過程。

  • Choice Target Options & Click Run Button

    這邊就開始啟動設備,其運作過程是如下:

    1. 先随機選擇執行項目(會看到很不用心的內容)。
    2. 利用Channel API丟出正在跑什麼項目給Client知道,這時Monitor的Message Log就會看到從Server傳過來的訊息。
    3. 接著裝置會閒置一段時間(模擬裝置執行所需時間)。
    4. 等結束後,再新增一個Tasks到Queue,使裝置能繼續運轉。
    5. 依序重覆循環共計10次,整個模擬就結束。

結語

為了玩玩看Channel API,就寫了一個非常簡單Monitor家電的Web App,其重點只是單向訊息傳遞,並未真正結合家電設備,若是能結合家電設備,會讓Demo更生動有趣。觀察自身四周,可以看到家電與生活息息相關,已經密不可分,人類對於家電的需求,也是不斷地推陳出新,再加上最近極力倡導綠色能源等概念,使家電品質能符合效能最大、最小汙染等環保理念。當然~也十分佩服Google開發Google PowerMeter能即時掌握家電使用情況及安全上考量。若是能成功普遍使用,相信會是新一波家電革命,大大提高生活品質。

沒有留言:

張貼留言