Django通过dwebsocket实现websocket的例子
与django推荐的channel不同,dwebsocket使用更加方便简单
使用方法1:
只需views.py文件中,将对应的视图函数添加装饰器
accept_websocket-—可以接受websocket请求和普通http请求 require_websocket----只接受websocket请求,拒绝普通http请求 fromdwebsocket.decoratorsimportaccept_websocket,require_websocket @accept_websocket deftest_websocket(request): ifrequest.is_websocket(): while1: 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文件中,添加如下信息
importdwebsocket #为所有的URL提供websocket,如果只是单独的视图需要可以不选 MIDDLEWARE_CLASSES=['dwebsocket.middleware.WebSocketMiddleware'] WEBSOCKET_ACCEPT_ALL=True#可以允许每一个单独的视图实用websockets
官方说明:做了如上配置,仍然会拒绝普通视图的websockets。所以必须在视图上设置'accept_websocket''属性来允许websockets,所以继续做如下配置。
2.views.py文件中,相关视图添加装饰器
fromdwebsocket.decoratorsimportaccept_websocket,require_websocket
@accept_websocket deftest_websocket(request): ifrequest.is_websocket(): while1: time.sleep(1)##向前端发送时间 dit={ 'time':time.strftime('%Y.%m.%d%H:%M:%S',time.localtime(time.time())) } request.websocket.send(json.dumps(dit))
看起来跟方法一没什么区别,还多了一步settings配置,但是区别在哪呢???
官方是这么说的:Theseattributesarealwaysavailableifyouusethemiddleware
翻译过来就是,如果使用中间件,有以下这下方法可用:
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的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。