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文件及目录操作实例详解
Jun 04 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
详解用Python练习画个美队盾牌
Mar 23 Python
基于Python的PIL库学习详解
May 10 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
django 通过URL访问上传的文件方法
Jul 28 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
python循环输出三角形图案的例子
Nov 22 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python异步的ASGI与Fast Api实现
Jul 16 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实现图片简单上传
2006/10/09 PHP
一些常用的php函数
2006/12/06 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
javascript中this的四种用法
2015/05/11 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
webpack打包非模块化js的方法
2018/10/24 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
Python多线程实例教程
2014/09/06 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python语法快速入门指南
2015/10/12 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python实现简单成绩录入系统
2019/09/19 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
大学生预备党员自我评价分享
2013/11/16 职场文书
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
保护地球的标语
2014/06/17 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python