无法使GAE Channel API在本地计算机上运行

时间:2010-12-30 12:57:24

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

我正在创建一个小应用程序来测试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代码尝试重复连接的网址,它引发了第二个错误:

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

我通过jQuery $.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)

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以尝试删除handler参数并添加处理程序作为套接字对象的方法,即socket.onopen = function() {};等。这对我有用。但你是对的。根据{{​​3}},您应该能够通过使用handler参数来实现此功能。 HMM。