0

GoogleAppEngineでチャネルAPIを使用してチャットアプリケーションを構築しようとしています。http://developers.google.com/appengine/docs/python/channel/overviewを確認する と、XMLHttpRequest()を使用してソケット部分を開くことが理解できませんでした。どんな助けでも大歓迎です!! ありがとう

4

2 に答える 2

2

基本的に、ソケットが開かれると、以下のコードはサンプルのTic Tac Toeゲームのユーザーインターフェイスを更新し、最新のゲーム状態を要求するPOSTメッセージをサーバーに送信します。

コードはPythonではなく、クライアント側のJavascriptです。私はそれを以下にコメントしました:

sendMessage = function(path, opt_param) {
  /* path variable is part of a URL being maintained */
  path += '?g=' + state.game_key;  /* Saving game key in URL */
  if (opt_param) {
    path += '&' + opt_param; /* Adding optional parameters to the path */
  }
  var xhr = new XMLHttpRequest(); /* Used for Ajax in Javascript */
  xhr.open('POST', path, true); /* Asynchronously POST, via HTTP, the path */
  xhr.send(); /* Start the POST above */
};

onOpened = function() {
  connected = true; /* Set boolean value, which lets us know we're connected */
  sendMessage('opened'); /* We can now send messages to the server */
  updateBoard(); /* Update user interface to reflect that socket is open */
};

sendMessage()アプリケーションは、クライアントがサーバーにメッセージを送信するために使用するXmlHttpRequestのラッパーとして定義していることに注意してください。

于 2012-07-09T16:51:45.890 に答える
0

クライアントとサーバー間のチャネルが確立されると、ソケットは「開かれ」ます。その時点で、OnOpenedコールバックが呼び出されます。コールバックは、ゲームの現在の状態を取得するためにサーバーにPOSTリクエストを返します。したがって、XMLHttpRequestはソケットのオープンとは関係ありませんが、チャネルが一方向(サーバーからクライアント)であるため、双方向通信を行うための一般的なコーディングパターンにすぎません。もう1つのルート(クライアントからサーバー)は、これらのHTTPリクエストを介して実行されます。サーバーからチャネルでメッセージを受信するたびに、サーバーに何かを送り返したいと思うでしょう(応答、更新など)。お役に立てれば。

于 2012-07-09T17:21:25.303 に答える