【问题标题】:Channel API python can't understand one partChannel API python看不懂一部分
【发布时间】:2012-07-09 16:32:32
【问题描述】:

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

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    基本上,当套接字打开时,下面的代码会更新一个示例井字游戏的用户界面,并向服务器发送一条 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 的包装器,客户端使用它来向服务器发送消息。

    【讨论】:

    • 所以如果我们正在构建一个聊天应用程序,这段代码基本上会自己更新聊天屏幕..基本上使用ajax
    • @user1512547 如果您在 Javascript 中创建一个函数来更新屏幕,它可以更新您的屏幕。该函数是一个回调函数,在打开套接字时执行。他们的 Javascript 函数更新了他们的井字游戏板被称为updateBoard()
    • sendMessage 实际上是向服务器发送消息(路径)。 onOpened 在套接字打开时执行。 updateBoard() 是一个 Javascript 函数,用于更新井字游戏的 GUI。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2017-09-21
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多