针对基于多用户Web的倒计时器的设计建议

时间:2012-09-17 14:44:15

标签: java python web-applications timer clock

我每周都会为视频制作提供帮助。我们将实时视频流式传输到达拉斯地区的多个卫星位置。为了确保所有接收位置与广播位置在同一时间表上,我们使用桌面时钟/定时器应用程序和远程位置VNC进入该桌面以查看时钟。

我想用基于web的计时器替换当前的计时器应用程序,这样我们就可以摆脱本质上脆弱的VNC解决方案。

以下是我的要求:

  1. 始终在运行的单主时钟(无需用户登录时钟继续运行)
  2. 任何给定观看者看到的与主时钟上的实际时间之间的差异不能超过1秒。
  3. 主时钟/倒计时器/计时器的任何更改都需要立即被所有观众看到。
  4. 这是我的问题: 我知道足够的java和python是危险的。但我从来没有写过一个需要在服务器和客户端之间实时同步的网络应用程序。我正在寻找一些关于如何构建满足上述要求的Web应用程序的建议。任何有关语言,图书馆,文章或博客的建议都可以为我指明正确的方向。但有一点需要注意:如果可能的话,我宁愿避免使用Java EE或.Net。

2 个答案:

答案 0 :(得分:0)

如果必须是Web应用程序,那么您可以使用websocket定期通知您的查看者服务器时间。请注意,仅在最新版本的IE(> 10.0)中支持websockets。

如果你有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的经验,我非常喜欢。

答案 1 :(得分:0)

  • 始终在运行的单主时钟(无需用户登录时钟继续运行)

这并不难。

  • 任何给定观看者看到的与主时钟上的实际时间之间的差异不能超过1秒。

这几乎是不可能的。您可以考虑网络延迟等,但无法确保这一点。

  • 主时钟/倒数计时器/计时器所做的任何更改都需要立即被所有观众看到。

您可以使用套接字执行此操作,或者您可以继续轮询服务器...

为“javascript ntp”进行网络搜索。有一些库可以大多数你想要的东西(而且我认为,足够你想要的东西)。

大部分工作都是这样的:

  • 尝试计算本地时钟到主时钟的偏移量
  • 持续轮询主时钟,试图找出平均延迟
  • 根据本地时钟和主时钟的花式数学显示时间。
几年前,我在一些基于闪存的聊天室工作。 SWF建立了与TwistedPython服务器的套接字连接。这对我们的需求来说效果很好,但我们并不关心延迟。