Не могу заставить GAE Channel API работать на локальном компьютере
-
14-10-2019 - |
Вопрос
Я создаю небольшое приложение, чтобы проверить, как работает 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() {};
и т.д. это сработало для меня. Но ты прав. Согласно с это, Вы должны быть в состоянии заставить это работать, используя аргумент обработчика. Хм.