我有一个使用Server-Sent Events和redis pubsub系统的django项目。 代码如下:
我使用JavaScript代码
打开事件var eventSource = new EventSource("/tweets/stream");
eventSource.addEventListener('message', function(e) {
console.log(message)
}, false);
然后在我的python代码中,我使用redis订阅来处理它。当我获得新数据并响应请求时。没有数据显示。所以我认为我的回复格式存在问题。
def stream(request):
def stream_data():
REDIS_CONF = {
'host': 'localhost',
'port': 6379,
'db': 1,
}
red = redis.StrictRedis(**REDIS_CONF)
pubsub = red.pubsub()
pubsub.subscribe('@NBA')
for message in pubsub.listen():
long_string = '''
id: 123 \n\n
data: 123123123 \n
'''
return long_string
return HttpResponse(stream_data(), content_type="text/event-stream")
答案 0 :(得分:1)
from django.http import HttpResponse, StreamingHttpResponse ... ... return StreamingHttpResponse(stream_data(), content_type="text/event-stream")
使用StreamingHttpResponse而不是HttpResponse将解决此问题。