Сервер 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
Эта последовательность не изменяется при отправке события, отправленного сервером, и нет никаких доказательств того, что сообщение получено на клиенте.
Прослушиватель событий не регистрируется на клиенте, а отладочное сообщение внутри прослушивателя не отображается в трассировке консоли, поэтому я предполагаю, что оно не вызывается.
Любые советы о том, что я делаю не так, или как отладить это, будут очень благодарны.