0

我正在尝试使用 Google App Engine 中的通道 API 构建聊天应用程序。在浏览 http://developers.google.com/appengine/docs/python/channel/overview时, 我无法理解使用 XMLHttpRequest(); 打开套接字部分;任何帮助将不胜感激!!谢谢

4

2 回答 2

2

基本上,当套接字打开时,下面的代码会更新示例井字游戏的用户界面,并向服务器发送一条 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 与套接字的打开无关,而只是一种具有双向通信的常见编码模式,因为通道只是一种方式(服务器到客户端)。另一条路由(客户端到服务器)是通过这些 HTTP 请求完成的。几乎每次您在频道中收到来自服务器的消息时,您都希望将某些内容发送回服务器(响应、更新等)。希望这可以帮助。

于 2012-07-09T17:21:25.303 回答