1

我正在创建一个小型应用程序来测试 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 的 JSON 请求获取令牌$.get。然后我运行这段代码来获取令牌并打开通道。错误在我运行时开始显示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)

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

4

2 回答 2

1

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

于 2010-12-30T14:42:59.463 回答
0

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

于 2011-01-05T20:04:41.817 回答