2013-05-04 276 views
3

我想開始創建一個在手機(任何類型的智能手機)上打開的網站。本網站將具有控制您已在計算機上打開的網站的功能。 (2011年的大衆新世紀甲殼蟲有這個功能,我可以通過我的臺式計算機上打開的網站上的智能手機滾動)網站遙控器

我們有一個用於horsevideos的流式網站,這對我們的客戶來說是一個很棒的功能,如果他們可以通過iphone/android/wp在智能電視上觀看流媒體並進行控制。

同樣來自瑞士的wilmaa.com提供智能手機的遙控器,可以在智能電視/網頁瀏覽器的我的網站上導航。

因爲我需要一個起點來了解它是如何工作的,我正在檢查谷歌,也許那裏已經有了任何遙控器,但不幸的是我找不到任何東西。

也許堆棧溢出可以幫助我通過給出一些關於如何實現這一點的起點。

+0

我也想弄明白這一點,查看http://www.diplomatic-cover.com/multi/ – Lobato 2013-11-12 12:21:55

回答

5

要做到這一點,您需要某種'推送'服務能夠克服HTTP固有的缺點,即它始終是'只能拉'系統 - 客戶端發起請求,服務器回答。在這種情況下,您希望將事件從服務器推送到客戶端。

在過去的幾年中,這已通過所謂的「長輪詢」完成。這意味着你「濫用」瀏覽器中的機制,保護服務器免於掛起請求,但允許它們花費一段時間。 Apache默認配置爲允許在大多數平臺上持續300秒的請求。長輪詢通過發送Ajax請求起作用,並且如果服務器沒有數據,而不是發回它,它只是等待,直到確實有有數據,或者長時間(例如一分鐘)已過期。客戶端在收到響應之前不會發送新的請求。這給最終用戶帶來了實時反饋的幻想,並且Facebook等網站多年來一直這樣做。

自從幾個月後,還可以採用新的HTML5技術,該技術現在在所有主流瀏覽器上都具有穩定的實現:Websockets。該技術允許服務器將通用拉取請求升級爲完全雙向連接,從而實現瀏覽器與服務器之間的實時通信。令人遺憾的是,像Apache這樣的「常規」網絡服務器並不是真正爲這種邏輯構建的,儘管可以用像棘輪這樣的框架來模擬它。對於系統的實時部分,大多數站點的當前選擇平臺(包括Stack Overflow)都是node.js - 服務器端異步Javascript。

我會在你的情況建議:

  • 建立一個獨立的node.js服務器爲事件調度(你可以在亞馬遜獲得一個便宜的微米尺寸的EC2實例像$ 15,可獲得每月大概會足夠了,而且是非常可擴展)
  • 保持在常規環境下,它現在是所有其他代碼,只需添加邏輯與事件調度
  • 部署Socket.io爲您的WebSocket處理服務進行通信。它簡化了服務器端和客戶端的所有Javascript邏輯,並以實現與IE5.5兼容的方式包裝實時連接,通過優雅地降低服務器和客戶端所支持的技術 - 最新瀏覽器上的websockets,長期民意調查或其他遺留系統上的技術。

使用此解決方案,您可以使用相對較少的代碼輕鬆實現跨多個平臺的完整實時響應,如您所述。

至於控制應用程序本身,只需使用HTML5,如果您打算分發到應用程序商店,則使用Phonegap