1

サービスをWebサイトとして提供するWebアプリケーションを作成しました。

次のように単純なアクションを呼び出して、他のソフトウェア (Web またはデスクトップ) が私のサービスを簡単に統合できるようにする WebServlet API を作成することを計画しています。

http://www.server_name.com/APIServlet?ACTION=CreateUser&DATA={"username":"username@gmail.com","password":"some_password"}

問題は、API が、特定の変更が発生するとすぐに API クライアントに非同期でデータを送信する方法も提供する必要があることです。

Channel API がこれを達成するためのより良い方法であることは知っていますが、特に JavaScript 以外のアプリケーションでは、API ユーザーが実装するのは非常に複雑です。

私の意見では、API ユーザーの労力が少なくて済むより良い解決策は、サーバーが何かを返すか、「タイムアウト」が発生するまで応答を保持する API アクションを提供する「ロング ポーリング」です。元:

    http://www.server_name.com/APIServlet?ACTION=WaitMessage&DATA={"sessionId":"12kdj45jsdj"}

しかし、appengine はリクエスト応答を 30 秒に制限しているため、この解決策は不可能です。

簡単な方法で、HTTP リクエストを使用して非同期サーバー -> クライアント通信を実装するにはどうすればよいですか。

4

2 に答える 2

0

これらは利用可能なさまざまな方法です

  1. WebSocket (HTML5 の一部)
  2. ロングポーリングとコメット
  3. ポーリング

Websockets を使用するのが最も簡単な方法です。ただし、これが機能するためには、クライアント側のブラウザーが最新であり、サーバー側もそれをサポートしていることを確認する必要があります。WebSocketServlet と呼ばれる新しいサーブレットは、Tomcat 7.0.32 以降で使用できます。

PS: アプリ エンジンが websocket サーバー側の実装に対応しているかどうかはわかりません。

ロング ポーリングとポーリングは古い方法です。しかし、ブラウザの互換性の問題のために、それらはまだ使用されています.

websockts 、ロングポーリング、およびポーリングのフォールバックメカニズムを含むAtmosphere フレームワークを使用できます。

于 2013-01-30T14:24:50.773 に答える
0

GAE でのサーバーからクライアントへの非同期通信は、Channel APIを介してのみ利用できます。残念ながらJavaScriptのみなので、ブラウザでしか使えません。

于 2013-01-30T16:46:52.213 に答える