1

毎週配信動画制作のお手伝いをしています。ダラス地域の多数のサテライト ロケーションにライブ ビデオをストリーミングしています。すべての受信ロケーションがブロードキャスト ロケーションと同じスケジュールであることを確認するために、デスクトップの時計/タイマー アプリケーションとリモート ロケーションの VNC をそのデスクトップに使用して時計を確認します。

本質的に壊れやすい VNC ソリューションを取り除くことができるように、現在のタイマー アプリケーションを Web ベースのアプリケーションに置き換えたいと考えています。

ここに私の要件があります:

  1. 常に実行されている単一のマスター クロック (クロックを実行し続けるためにユーザーがログインする必要はありません)
  2. 特定の視聴者に表示される時間とマスター クロックの実際の時間との差異は、1 秒を超えることはできません。
  3. マスター クロック/カウントダウン タイマー/カウントアップ タイマーに加えられた変更は、ほぼ瞬時にすべての視聴者に表示される必要があります。

ここに私の質問があります: 私は十分な Java と Python が危険であることを知っています. しかし、このようにサーバーとクライアントの間でリアルタイムの同期を必要とする Web アプリを作成したことはありません。上記の要件を満たす Web アプリケーションを設計する方法について、いくつかの推奨事項を探しています。私を正しい方向に導くことができる言語、ライブラリ、記事、またはブログに関する提案をいただければ幸いです。ただし、注意点が 1 つあります。可能であれば、Java EE または .Net の使用は避けたいと思います。

4

2 に答える 2

0

Web アプリケーションでなければならない場合は、WebSocketを使用して定期的にサーバー時刻を視聴者に通知できます。ただし、Websocket は最近のバージョンの 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!');
     };
  };

サーバー側では、この websocket 実装のリストを参照してください。Tornadoを使用した経験があり、とても気に入っています。

于 2012-09-17T14:54:08.160 に答える
0
  • 常に実行されている単一のマスター クロック (クロックを実行し続けるためにユーザーがログインする必要はありません)

それは難しいことではありません。

  • 特定の視聴者に表示される時間とマスター クロックの実際の時間との差異は、1 秒を超えることはできません。

それはほとんど不可能です。ネットワークの遅延などを考慮することはできますが、これを保証することはできません。

  • マスター クロック/カウントダウン タイマー/カウントアップ タイマーに加えられた変更は、ほぼ瞬時にすべての視聴者に表示される必要があります。

ソケットでそれを行うことも、サーバーをポーリングし続けることもできます...

「javascript ntp」のウェブ検索を行います。あなたが望むことのほとんどを行うライブラリがいくつかあります(そして、あなたが望むことは十分にあると私は主張します)。

ほとんどは次のように機能します。

  • マスタークロックに対するローカルクロックのオフセットを計算してみてください
  • マスタークロックの時間を継続的にポーリングし、平均遅延を把握しようとします
  • ローカル クロックとマスター クロックの凝った計算に基づいて時刻を表示します。

数年前、私はいくつかのフラッシュ ベースのチャット ルームに取り組んでいました。SWF は TwistedPython サーバーへのソケット接続を確立しました。これは私たちのニーズには十分に対応できましたが、遅延については気にしませんでした。

于 2012-09-17T15:23:39.573 に答える