web-dev-qa-db-ja.com

HTTPおよびTCP / IPを介したオブザーバーパターン(サーバークライアント)

私はサーバーと多くのクライアント(約50クライアント)がWebアプリケーションに基づいてそのサーバーに接続しますが、これはもちろんHTTPプロトコルに基づいており、次にTCP/IPを使用します(間違っている場合は修正してください。ネットワーキングは本当に得意ではありません)。

問題は、私がアラートメカニズムを開発する必要があることです。誰かが危険な値を含むフォームを送信すると、マネージャー(同じWebアプリケーションを介して接続されているマネージャー)が画面にアラートポップアップを表示します。 -time(瞬時に)。

ただし、HTTPプロトコルはステートレスなので、ここでは少し戸惑います。これを実装する方法がわかりません。

解決策の1つは、setInterval()関数とともにJavaScriptを使用して、サーバーから毎秒pullデータを取得することです。しかし、これは私には少し汚く、専門家ではないようです。

別のソリューションを実装するアイデアはありますか?

9
Saeed Neamati

何らかの種類のajax PushComet を参照)を使用してクライアントに通知する必要があります。ポーリングの必要をなくすことができます。基本的に、確立された接続を開いたままにしておき、発生したイベントをブラウザに通知するために使用できます。ただし、これはすべてのブラウザで機能するわけではありません。このような場合は、「ロングポーリング」にフォールバックします。

4
Falcon

これがこの種の理由だと思います WebSockets が作成された理由。古いブラウザとの互換性が必要ない場合は、ポーリングの代わりにこれを使用できます。とにかく、ポーリングをフォールバックとして使用する必要があります。

最近、仕様/実装がどれほど安定しているかはわかりません(それほど以前にはそれほど安定していませんでした)。 Firefox 6とChromium 14には最新の仕様が実装されているようです。

6
ysdx