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获取目录下所有文件的方法
Jun 01 Python
Python中字符串的格式化方法小结
May 03 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python实现多层感知器
Jan 18 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python 实现矩阵填充0的例子
Nov 29 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Python中如何引入第三方模块
May 27 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
python中用ggplot绘制画图实例讲解
Jan 26 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php 短链接算法收集与分析
2011/12/30 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
有关爱国演讲稿
2014/05/07 职场文书
音乐会主持人开场白
2015/05/28 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书