赞
踩
websocket是一种持久化的协议,HTTP协议是一种无状态的协议,在特定场合我们需要使用长连接,做数据的实时更新,这种情况下我们就可以使用websocket做持久连接。http与websocket二者存在交集。
后端:
- from dwebsocket.decorators import accept_websocket
- import json
- # 存储连接websocket的用户
- clist = []
-
- @accept_websocket
- def websocketLink(request):
- # 获取连接
- if request.is_websocket:
- # 新增 用户 连接信息
- clist.append(request.websocket)
- # 监听接收客户端发送的消息 或者 客户端断开连接
- for message in request.websocket:
- break
-
- # 发送消息
- def websocketMsg(client, msg):
- b1 = json.dumps(msg,ensure_ascii=False).encode('utf-8')
- client.send(b1)
-
- # 服务端发送消息
- def sendmsg():
- sql = "select * from customer"
- res = db1.find_all(sql)
- if len(clist)>0:
- for i in clist:
- i.send(json.dumps({'list': res},ensure_ascii=False).encode('utf-8'))
- # websocketMsg(i, {'list': res})
- return HttpResponse("ok")
-
- from apscheduler.schedulers.blocking import BlockingScheduler
-
- def getecharts(request):
- scheduler = BlockingScheduler()
- scheduler.add_job(sendmsg,'interval',seconds=1)
- scheduler.start()
- return HttpResponse('ok')

前端:
- <template>
- <div class="bgpic">
- <van-row style="padding-top: 10px;padding-bottom: 10px">
- <van-col span="8">
- <div id="weekmain" style="width: 400px;height: 300px"></div>
- </van-col>
- <van-col span="8">http://api.map.baidu.com/marker </van-col>
- <van-col span="8">
- <div id="monthmain" style="width: 400px;height: 300px"></div>
- </van-col>
- </van-row>
- <van-row>
- <van-col span="8"></van-col>
- <va
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。