Django通过dwebsocket实现websocket的例子


Posted in Python onNovember 15, 2019

与django推荐的channel不同,dwebsocket使用更加方便简单

使用方法1:

只需views.py文件中,将对应的视图函数添加装饰器

accept_websocket-—可以接受websocket请求和普通http请求
require_websocket----只接受websocket请求,拒绝普通http请求
from dwebsocket.decorators import accept_websocket,require_websocket

@accept_websocket
def test_websocket(request):
  if request.is_websocket():
    while 1:
      time.sleep(1) ## 向前端发送时间
      dit = {
        'time':time.strftime('%Y.%m.%d %H:%M:%S',time.localtime(time.time()))
      }
      request.websocket.send(json.dumps(dit))

使用方法2:

使用中间件

步骤:

1. settings.py文件中,添加如下信息

import dwebsocket
# 为所有的URL提供websocket,如果只是单独的视图需要可以不选
MIDDLEWARE_CLASSES=['dwebsocket.middleware.WebSocketMiddleware']

WEBSOCKET_ACCEPT_ALL=True # 可以允许每一个单独的视图实用websockets

官方说明:做了如上配置,仍然会拒绝普通视图的websockets。所以必须在视图上设置' accept_websocket ' '属性来允许websockets,所以继续做如下配置。

2. views.py文件中,相关视图添加装饰器

from dwebsocket.decorators import accept_websocket,require_websocket

@accept_websocket
def test_websocket(request):
  if request.is_websocket():
    while 1:
      time.sleep(1) ## 向前端发送时间
      dit = {
        'time':time.strftime('%Y.%m.%d %H:%M:%S',time.localtime(time.time()))
      }
      request.websocket.send(json.dumps(dit))

看起来跟方法一没什么区别,还多了一步settings配置,但是区别在哪呢???

官方是这么说的:These attributes are always available if you use the middleware

翻译过来就是,如果使用中间件,有以下这下方法可用:

request.is_websocket() #websocket请求返回True,普通请求返回False
request.websocket # websocket建立连接后,request将有websocket提供的相关api属性,如果没有建立连接则是None
WebSocket.wait() # 阻塞接收消息
WebSocket.read() # 非阻塞接收消息
WebSocket.count_messages() #返回队列中的消息数量
WebSocket.has_messages() # 有消息返回True,反之False
WebSocket.send(message) # 发送消息
WebSocket.__iter__() # 当迭代器使用

官方链接

以上这篇Django通过dwebsocket实现websocket的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学Python之入门(二)基本数据类型
May 25 Python
Python重新引入被覆盖的自带function
Jul 16 Python
python 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python中字典和JSON互转操作实例
Jan 19 Python
Python map和reduce函数用法示例
Feb 26 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
使用Python处理BAM的方法
Sep 28 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python实现windows倒计时锁屏功能
Jul 30 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
Python numpy线性代数用法实例解析
Nov 15 #Python
Django中提示消息messages的设置方式
Nov 15 #Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 #Python
Django实现简单网页弹出警告代码
Nov 15 #Python
使用Python函数进行模块化的实现
Nov 15 #Python
Python argparse模块应用实例解析
Nov 15 #Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 #Python
You might like
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
详解Django的CSRF认证实现
2018/10/09 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
django 模型字段设置默认值代码
2020/07/15 Python
python excel多行合并的方法
2020/12/09 Python
点菜员岗位职责范本
2014/02/14 职场文书
战略合作意向书范本
2014/04/01 职场文书
学生安全责任书
2014/04/15 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
2016情人节宣传语
2015/07/14 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python