【问题标题】:Can't make GAE Channel API work on local computer无法使 GAE Channel API 在本地计算机上工作
【发布时间】:2011-06-01 13:21:34
【问题描述】:

我正在创建一个小应用程序来测试 GAE Channel API 的工作原理。我想我已经按照文档中的描述做了所有事情,但是当我启动它时,它在 FireFox 错误日志中显示了一个关于开头语法的错误,然后是另一个重复的错误,即没有找到一个元素。 这是第一个错误信息:

Source: http://127.0.0.1:8080/_ah/channel/dev?command=connect&channel=channel-773698929-185804764220139124118
Line 1, symbol 1

这是我的 javascript 代码尝试重复连接并引发第二个错误的 url:

http://127.0.0.1:8080/_ah/channel/dev?command=poll&channel=channel-2071442473-185804764220139124118&client=1

我通过带有 jQ​​uery $.get 的 JSON 请求获取令牌。然后我运行这段代码来获取令牌并打开通道。当我运行socket = channel.open(handler)时,错误开始显示:

var response = JSON.parse(data);
        var token = response.token.toString();
        channel = new goog.appengine.Channel(token);
        var handler = {
            'onopen': onOpened,
            'onmessage': onMessage,
            'onerror': function() {
            },
            'onclose': function() {
            }
        };

        socket = channel.open(handler);

这是打开频道的Python服务器端代码:

class OpenChannel(webapp.RequestHandler):
    def get(self):
        user = users.get_current_user()
        token = channel.create_channel(user.user_id())
        serialized = json.dumps({'token': token})
        self.response.headers['Content-Type'] = "application/json"
        self.response.out.write(serialized)

我的错误是什么,我该怎么办?谢谢!

【问题讨论】:

    标签: python ajax json google-app-engine channel


    【解决方案1】:

    似乎 Channel API 在 localhost 上的工作方式与在 GAE 主机上不同。我把它上传到云端,现在运行良好。虽然它看起来在本地计算机上运行良好,但它会在错误日志中显示永久性 JS 错误重复。

    【讨论】:

    • 这应该是您的问题或评论的一部分,而不是答案。
    • 我想是的,但无论如何似乎还没有多少人遇到过这个问题。
    【解决方案2】:

    您可以尝试删除处理程序参数并将处理程序添加为套接字对象的方法,即socket.onopen = function() {}; 等。这对我有用。但你是对的。根据this,您应该能够通过使用处理程序参数来完成这项工作。嗯。

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多