stram 简介
text/event-stream
是一种数据格式,通常用于服务器向客户端发送实时更新的数据。这种格式常用于实现 Server-Sent Events (SSE)。 Server-Sent Events 允许服务器端主动向客户端推送数据,而不需要客户端轮询请求。它使用 HTTP 协议,并且保持连接始终打开,以便服务器可以随时发送更新的数据给客户端。
django 使用
在 Django 中,你可以使用 StreamingHttpResponse 类来发送 text/event-stream
格式的数据。StreamingHttpResponse 是 HttpResponse 的子类,它允许你以流的形式发送响应数据,而不是一次性将所有数据加载到内存中。
views.py
# 在这里我们做了服务器主动断开,浏览器主动断开的功能的实现。
# 我们模拟主动给客户端发送50次响应,每次耗时1秒,当发送到20次服务器主动断开
def test_header(reuqest):
import datetime
import time
from django.http import StreamingHttpResponse
def event_stream():
for i in range(50):
try:
time.sleep(1)
if i == 20:
print('服务端主动断开')
return # or break
yield_data = 'data: The 中文 time is: %s\n\n' % datetime.datetime.now()
print('我在发送数据: {}'.format(yield_data))
yield yield_data
except GeneratorExit: # 用户主动断开走此方法
print('客户端断开了')
return # or break
return StreamingHttpResponse(event_stream(), content_type=