1

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

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

以下是我的要求:

  1. 始终运行的单个主时钟(无需用户登录即可继续运行时钟)
  2. 任何给定观众看到的内容与主时钟上的实际时间之间的差异不能大于 1 秒。
  3. 对主时钟/倒数计时器/倒数计时器所做的任何更改都需要立即被所有观众看到。

这是我的问题:我知道足够多的 java 和 python 是危险的。但我从未编写过需要像这样在服务器和客户端之间实时同步的网络应用程序。我正在寻找有关如何构建满足上述要求的 Web 应用程序的一些建议。任何可以为我指明正确方向的语言、库、文章或博客的建议将不胜感激。但有一点需要注意:如果可能,我宁愿避免使用 Java EE 或 .Net。

4

2 回答 2

0

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

如果您有 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!');
     };
  };

在服务器端,请参阅此 websocket 实现列表。我有一些使用Tornado的经验,我非常喜欢它。

于 2012-09-17T14:54:08.160 回答
0
  • 始终运行的单个主时钟(无需用户登录即可继续运行时钟)

这并不难。

  • 任何给定观众看到的内容与主时钟上的实际时间之间的差异不能大于 1 秒。

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

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

您可以使用套接字来做到这一点,或者您可以继续轮询服务器......

对“javascript ntp”进行网络搜索。有一些库可以满足您的大部分需求(我认为,您想要的已经足够了)。

大多数工作是这样的:

  • 尝试计算本地时钟到主时钟的偏移量
  • 不断轮询主时钟的时间,试图找出平均延迟
  • 根据本地时钟与主时钟的精美数学显示时间。

几年前,我在一些基于 Flash 的聊天室工作。SWF 建立到 TwistedPython 服务器的套接字连接。这足以满足我们的需求,但我们并不关心延迟。

于 2012-09-17T15:23:39.573 回答