2

次の制約の下で動作する必要がある Javascript ウィジェットを見ています。

  1. ウィジェットは、コールバック URL とともにサードパーティ サーバーにリクエストを送信します。
  2. サードパーティのサーバーは、任意の時間の後にコールバック URL に ping を送信します。これにより、メソッドがウィジェット内で実行されます。

ウィジェットの実装方法は次のとおりです。

  1. サーバーAがセットアップされました。ウィジェットは、サーバー A を指す静的 URL に GUID パラメーターを追加します。
  2. ウィジェットは、この URL を (GUID パラメーターと共に) サード パーティ サーバーに送信します。
  3. サーバー X は、サード パーティ サーバーからの要求を単にリッスンし、各要求からの GUID パラメーターをデータベースに格納します。
  4. ウィジェットはサーバー A を X 秒ごとにポーリングして、サードパーティ サーバーがその GUID を含むコールバックを送信したかどうかを確認します。
  5. サーバーが OK 応答を返した場合、ウィジェットは必要なメソッドを実行します。

かなり大ざっぱな実装のようです。これを行う簡単な方法はありませんか?

私は探求したいと思います:

a) ウィジェットからサーバーを繰り返しポーリングすることを避けることができるかどうか? キープアライブ接続を設定できますか? ウィジェットはサーバー イベントにサブスクライブできますか? サーバーからブラウザーにプッシュ通知を送信できるサーバー送信イベント API を確認しました。しかし、これはまだ IE と互換性がありません。

b) バックエンドのセットアップを完全に回避できるかどうか? WebSocket が頭に浮かびますが、詳細については漠然としていて、互換性の問題により望ましくないものになるでしょう。

ありがとう。

4

1 に答える 1

4

サーバー メッセージと WebSocket が 2 つの答えです。悲しいことに、どちらもどこにでもあるわけではないので、どちらのバニラ実装も使用できず、完全なサポートを期待できません。

Flash へのフォールバックまたはロングポーリングを使用して、両端で WebSocket 機能を提供するソリューションがいくつかあります (残念ながらいくつかの有料)。

Pusherはすぐに頭に浮かぶライブラリです。バックエンドが何であれ、Pusher にはいくつかの実装があり、クライアントはデフォルトで websocket になりますが、可能であれば Flash のデータ転送形式に戻ります。また、REST API もあります。

それはすべて、あなたが誰をサポートしようとしているかにかかっています。結局のところ、あなたが IE6/7 ユーザーに完全なリアルタイム エクスペリエンスを提供したいと思っているかどうかさえわかりません。最悪の場合はパフォーマンスが最も遅く、最も遅いブラウザは使用できなくなります。

于 2012-09-15T04:12:23.000 に答える