Channel API python无法理解其中的一部分

时间:2012-07-09 16:32:32

标签: python google-app-engine

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

2 个答案:

答案 0 :(得分: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的包装器,客户端使用该包装器将消息发送到服务器。

答案 1 :(得分:0)

当建立客户端和服务器之间的通道时,套接字“打开”。此时调用OnOpened回调。回调向服务器发出POST请求以获取游戏的当前状态。所以XMLHttpRequest与套接字的开放无关,而只是一种通用的编码模式,因为通道只是一种方式(服务器到客户端),所以进行双向通信。另一条路由(客户端到服务器)通过这些HTTP请求完成。几乎每次从服务器收到通道中的消息时,您都希望将某些内容发送回服务器(响应,更新等)。 希望这会有所帮助。