django+WebSocket主动推送数据到前端
- 一旦web服务器和客户端之间建立起websocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发下哦那个JSON、XML、HTML或者图片等任意格式的数据。
- 由于是建立在HTTP协议的基础上,因此连接的发起方仍是客户端,而一旦确立websocket通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。
- websocket协议的主要特点:
- 推送功能
- 支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
- 减少通信量
- 只要建立起websocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于websocket的首部信息很小,通信量也响应减少了。
成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据帧。
- 只要建立起websocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于websocket的首部信息很小,通信量也响应减少了。
- 推送功能
Django实现后端主动推送数据到前端
安装dwebsocket库
pip install dwebsocket
settings.py
INSTALLED_APPS = [
、、、、、、
'dwebsocket'
、、、、、、
]
views.py
from dwebsocket.decorators import accept_websocket
@accept_websocket
def connect(request):
if request.is_websocket(): # 如果请求是websocket请求:
#获取前端传来的值
msg=request.websocket.wait()
dict={}#自己设定要传到前端的字典值
json.dumps(dict,ensure_ascii=False)
#返回值到前端,这个操作只要连接还在就可以不断的向前端传值