我正在尝试使用Google App Engine中的渠道API构建聊天应用程序。 通过http://developers.google.com/appengine/docs/python/channel/overview时 我无法理解使用XMLHttpRequest()打开套接字部分; 任何帮助将不胜感激!! 感谢
答案 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请求完成。几乎每次从服务器收到通道中的消息时,您都希望将某些内容发送回服务器(响应,更新等)。 希望这会有所帮助。