Не могу заставить GAE Channel API работать на локальном компьютере

StackOverflow https://stackoverflow.com/questions/4562762

Вопрос

Я создаю небольшое приложение, чтобы проверить, как работает API GAE Channel. Я думаю, что я сделал все, как это было описано в документации, но когда я ее запускаю, в начале он показывает ошибку в журнале ошибок Firefox о синтаксисе, а затем еще одна повторяющаяся ошибка, что элемент не обнаружил этого. Вот первая информация об ошибке:

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

Вот URL, в котором мой код JavaScript пытается неоднократно подключиться, и он вызывает вторую ошибку:

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

Я получаю токен через запрос JSON с JQUERY $.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)

Что моя ошибка и что я могу сделать? Спасибо!

Это было полезно?

Решение

Кажется, что API канала работает на локальном хосте иначе, чем на хостинге GAE. Я загрузил его в облако, и теперь он хорошо работает. Хотя похоже, что он отлично работает на локальном компьютере, он показывает постоянную ошибку JS, повторяющуюся в журнале ошибок.

Другие советы

Вы можете попытаться удалить аргумент обработчика и добавить обработчиков в качестве методов объекта сокета, т.е. socket.onopen = function() {}; и т.д. это сработало для меня. Но ты прав. Согласно с это, Вы должны быть в состоянии заставить это работать, используя аргумент обработчика. Хм.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top