当前位置:   article > 正文

django中websocket的使用_@accept_websocket

@accept_websocket

websocket是一种持久化的协议,HTTP协议是一种无状态的协议,在特定场合我们需要使用长连接,做数据的实时更新,这种情况下我们就可以使用websocket做持久连接。http与websocket二者存在交集。

后端:

  1. from dwebsocket.decorators import accept_websocket
  2. import json
  3. # 存储连接websocket的用户
  4. clist = []
  5. @accept_websocket
  6. def websocketLink(request):
  7. # 获取连接
  8. if request.is_websocket:
  9. # 新增 用户 连接信息
  10. clist.append(request.websocket)
  11. # 监听接收客户端发送的消息 或者 客户端断开连接
  12. for message in request.websocket:
  13. break
  14. # 发送消息
  15. def websocketMsg(client, msg):
  16. b1 = json.dumps(msg,ensure_ascii=False).encode('utf-8')
  17. client.send(b1)
  18. # 服务端发送消息
  19. def sendmsg():
  20. sql = "select * from customer"
  21. res = db1.find_all(sql)
  22. if len(clist)>0:
  23. for i in clist:
  24. i.send(json.dumps({'list': res},ensure_ascii=False).encode('utf-8'))
  25. # websocketMsg(i, {'list': res})
  26. return HttpResponse("ok")
  27. from apscheduler.schedulers.blocking import BlockingScheduler
  28. def getecharts(request):
  29. scheduler = BlockingScheduler()
  30. scheduler.add_job(sendmsg,'interval',seconds=1)
  31. scheduler.start()
  32. return HttpResponse('ok')

前端:

  1. <template>
  2. <div class="bgpic">
  3. <van-row style="padding-top: 10px;padding-bottom: 10px">
  4. <van-col span="8">
  5. <div id="weekmain" style="width: 400px;height: 300px"></div>
  6. </van-col>
  7. <van-col span="8">http://api.map.baidu.com/marker </van-col>
  8. <van-col span="8">
  9. <div id="monthmain" style="width: 400px;height: 300px"></div>
  10. </van-col>
  11. </van-row>
  12. <van-row>
  13. <van-col span="8"></van-col>
  14. <va
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/327513
推荐阅读
相关标签
  

闽ICP备14008679号