Сервер Django отправил событие, не вызывающее прослушиватель HTML5

Мне нужен шаблон django для обновления при обнаружении асинхронного события на сервере. Я успешно реализовал это, используя django-каналы на моем сервере разработки.

Однако сервер, на котором мне нужно развернуть (pythonanywhere.com), не поддерживает приложения ASGI, поэтому я не могу использовать там django-каналы.

Я попытался создать очень простое событие, отправленное сервером, используя django-eventsteam, используя рекомендации в https://github.com/fanout/django-eventstream.

Я удалил каналы и каналы-redis из моего виртуального окружения, затем установил django-eventstream (это переустановил каналы)

Я пытался использовать pushpin и fanout в качестве посредников сообщений, но у меня все еще остается та же проблема.

Сообщение, отправленное сервером, похоже, отправлено правильно:

send_event('test', 'message', {'text': 'hello world'})

но, похоже, не обнаруживается клиентом.

var es = new ReconnectingEventSource('evdja/?channel=test');

es.addEventListener('message', function (e) {
    console.log(e.data);
                location.reload(true);
}, false);

Я просто хочу, чтобы страница обновлялась при обнаружении отправленного сервером события, но прослушиватель не запускается, на консоли не появляется никаких сообщений и обновление не происходит.

В противном случае соединение кажется нормальным, и я получаю это сообщение, повторяющееся каждые 3 секунды на консоли на стороне сервера:

[13/Aug/2018 11:35:25] "GET /kbfb/event/evdja/?channel=test HTTP/1.1" 200 2077

В браузере Chrome я добавил несколько сообщений трассировки в reconnecting-eventsource.js и получил следующую последовательность сообщений, повторяющихся на консоли клиента:

ReconnectingEventSource.prototype._onopen

ReconnectingEventSource.prototype.onopen:open

ReconnectingEventSource.prototype._onerror

ReconnectingEventSource.prototype.onerror:error

Эта последовательность не изменяется при отправке события, отправленного сервером, и нет никаких доказательств того, что сообщение получено на клиенте.

Прослушиватель событий не регистрируется на клиенте, а отладочное сообщение внутри прослушивателя не отображается в трассировке консоли, поэтому я предполагаю, что оно не вызывается.

Любые советы о том, что я делаю не так, или как отладить это, будут очень благодарны.

0 ответов

Другие вопросы по тегам