2012-09-17 49 views
1

我幫助每週製作流式視頻。我們將實況視頻傳輸到達拉斯地區的多個衛星地點。爲了確保所有的接收位置與廣播位置相同,我們使用桌面時鐘/定時器應用程序和遠程位置VNC到該桌面來查看時鐘。針對基於多用戶web的倒數計時器的設計建議

我想用基於Web的計時器應用程序替換當前的計時器應用程序,以便我們擺脫固有脆弱的VNC解決方案。

這裏是我的要求:

  1. 一個主時鐘是始終運行的(沒有用戶需要登錄,以便時鐘繼續運行)
  2. 之間有什麼任何給定的觀衆看到和實際時間的差異在主時鐘上不能大於1秒。
  3. 任何對主時鐘/倒數計時器/倒數計時器的更改都需要立即接近所有觀看者。

這是我的問題: 我知道足夠的java和python是危險的。但我從來沒有寫過一個需要在服務器和客戶端之間實時同步的Web應用程序。我正在尋找關於如何構建滿足上述要求的Web應用程序的一些建議。任何關於語言,圖書館,文章或博客的建議都可以讓我指出正確的方向。但有一點需要注意:如果可能,我寧願避免使用Java EE或.Net。

+1

是否有政府機構擁有面向公衆的API,您可以讓服務器詢問當前時間?類似time.gov和API。這樣,你不依賴服務器的正常運行時間或任何事情來找出時間。 – thatidiotguy

+0

http://en.wikipedia.org/wiki/Network_Time_Protocol?或者我在這裏錯過了一些東西。 – Fildor

回答

0

如果它必須是一個Web應用程序,那麼您可以使用websocket定期通知您的觀衆的服務器時間。但請注意,websockets只支持最新版本的IE(> 10.0)。

如果你有JavaScript的經驗(特別是jQuery),websocket編程將非常容易。

window.onload = function() { 
    ws = new WebSocket("ws://<host>:<port>/echows"); 
    ws.onopen = function() { 
     // do any initialization 
    }; 
    ws.onmessage = function (evt) { 
     // use evt.data; 
    }; 
    ws.onclose = function() { 
     // alert('Lost connection!'); 
    }; 
    }; 

在服務器端看到this list of websocket implementations。我有一些使用Tornado的經驗,我非常喜歡它。是始終運行

0
  • 一個主時鐘(沒有用戶需要登錄,以便時鐘繼續運行)

這並不難。

  • 任何給定查看者看到的和主時鐘上的實際時間之間的差異不能大於1秒。

這幾乎是不可能的。你可以考慮網絡延遲等,但你不能確保這一點。

  • 任何對主時鐘/倒數計時器/計數器計時器的更改都需要立即接近所有觀看者。

你可以做到這一點與插座,或者你可以只保留輪詢服務器...

爲「JavaScript的NTP」做網絡搜索。有一些圖書館會做你想要什麼(和我認爲,足夠你想要的)。

最多的工作是這樣的:

  • 嘗試計算本地時鐘的偏差與主時鐘
  • 不斷調查主時鐘的時間,試圖找出平均延遲
  • 顯示時間基於本地和主時鐘的花式數學。

年前我工作過一些基於flash的聊天室。一個SWF建立了一個到TwistedPython服務器的套接字連接。這對我們的需求來說足夠好,但我們並不關心延遲。