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三元运算符实现方法
Dec 17 Python
Python中的startswith和endswith函数使用实例
Aug 25 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 Python
Python实现自动发送邮件功能
Mar 02 Python
python中对数据进行各种排序的方法
Jul 02 Python
python学生信息管理系统实现代码
Dec 17 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
 python中的元类metaclass详情
May 30 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
validator验证控件使用代码
2010/11/23 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
JS实现复制功能
2017/03/01 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
Python实现视频下载功能
2017/03/14 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python实现感知机模型的示例
2020/09/30 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
成人教育自我鉴定
2013/11/01 职场文书
爷爷追悼会答谢词
2014/01/24 职场文书
节能减排倡议书
2014/04/15 职场文书
结对共建工作方案
2014/06/02 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
django中websocket的具体使用
2022/01/22 Python