サーバーサイドイベントのサポートをCppCMSに追加するつもりです。私はコミュニケーションの レベルで何をするかの技術的な部分を理解します。クライアントが長いポーリングのXMLHttpRequestを送信し、応答を待ち、 サーバーは接続を受け入れ、サーバー側のイベントが発生すると クライアントに応答を送信するまで応答しません。クライアントはこの手順を繰り返します。サーバープッシュテクノロジ(COMET)のAPIモデル
しかし、これはあまりにもWeb開発者のほとんどは「低」レベルです。どのようにイベントを管理するのか、どのように私は接続を管理するのか、多くの疑問があります。
私は約2可能なモデルを考えた:
例えば定義されたいくつかの名前のイベントとサーバー側、 「チャットルームでの新しいメッセージが何134」はありません。要求は、サーバ側のアプリケーションを受け入れ は(DBで例えば)部屋にメッセージを をチェックし、クライアント ために新しいメッセージが存在しない場合には、イベントをサブスクライブし、その上に待機します。
他のクライアントがサーバーにデータを投稿すると、 のすべてのアプリケーションに「チャットルームの新しいメッセージはありません」134というイベントが通知され、クライアントはウェイクアップしてこれらのメッセージをクライアントに送信します。
このモデルはまだかなり「低レベル」モデルのように見えているが、それはすべての 通知方法を非表示にします。
もう1つの方法は、いくつかの名前付きキューを定義することです。そのため、各クライアントはサーバーへの接続時にこのような キューを作成し、新しいメッセージを待ちます。一部のクライアント が「チャットルームNo 134」に新しいメッセージを投稿すると、サーバー側ではこの「チャットルームNo 134」に接続されているすべてのキューに がブロードキャストされ、メッセージはクライアントに として配信されます。
- 私は、単一のページのレベルで、キューとセッションレベルを管理するにはどうすればよい:
しかし上昇している多くの質問があるのですか?
- キューを削除してタイムアウトを作成するにはどうすればよいですか?
- 複数の「ウィンドウ」が同じキューにサブスクライブするとどうなりますか?
- 私は、単一のページのレベルで、キューとセッションレベルを管理するにはどうすればよい:
サーバー側のイベント とユーザー側のイベントの間にある永続オブジェクトをサーバー側に作成します。別のXHR要求( )にリダイレクトされて通信することがあります。
クライアント(JavaScript)はイベントを登録し、XHR とサーバーサイドがイベント通知をディスパッチするまで、ページが再構築されるまでイベントを登録します。
だから、私が知りたいのですが、どのような最も普及していると APIモデルサーバー側のプッシュ技術の後ろにお勧め?
おかげ
編集:追加されました第三の選択肢
もしそうなら、それは第二1に類似だろう... – Artyom
バイユーは彗星スタイルの通信のためのクリーンでかつ最も簡単な規格の一つです。 – Anton
+1バイユー。シンプルで効果的ですが、XMPPの複雑さの中にはありません。 – jvenema