62. Django 2.1.7 通过dwebsocket实现websocket

网友投稿 771 2022-09-10

62. Django 2.1.7 通过dwebsocket实现websocket

62. Django 2.1.7 通过dwebsocket实现websocket

dwebsocket 相关网站

​​install dwebsocket

目前我-的是最新版本 0.5.11,所以指定版本安装也可以,如下:

pip3 install dwebsocket==0.5.11

使用说明

上面已经安装好了​​dwebsocket​​库,那么如何使用呢?使用的方法有两种情况,如下:

第一种则是利用修饰器的方式单独对某个视图进行增加websocket功能另一种则是在配置文件中设置中间件,配置所有视图都可以接收使用websocket功能。

相关方法函数说明

​​1.request.is_websocket()​​

如果是个websocket请求返回True,如果是个普通的- 使用修饰器对单个视图启用websocket功能

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

accept_websocket-—可以接受websocket请求和普通jsonimport timefrom dwebsocket.decorators import accept_websocket,require_websocket@accept_websocketdef test_websocket(request): if request.is_websocket(): # 如果请求是websocket请求: i = 0 # 设置发送至前端的次数 while True: i += 1 # 递增次数 i # 休眠1秒 time.sleep(1) # 设置发送前端的数据 messages = { 'time':time.strftime('%Y.%m.%d %H:%M:%S',time.localtime(time.time())), 'msg': 'send %d times!' % i, } # 设置发送数据为json格式 request.websocket.send(json.dumps(messages))

设置访问视图的url地址

from .views import *app_name = 'assetinfo' # 设置命名空间urlpatterns = [ # ex:/assetinfo/test_websocket path('test_websocket', views.test_websocket , name='test_websocket'),]

新建​​websocket_client.html​​在templates文件夹下,编写浏览器websocket的客户端

Title

Received Messages

编写websocket客户端的视图

def test_websocket_client(request): return render(request,'websocket_client.html')

配置websocket客户端访问的url

urlpatterns = [ # ex:/assetinfo/test_websocket_client path('test_websocket_client', views.test_websocket_client , name='test_websocket_client'),]

测试运行的效果

访问客户端:http://127.0.0.1:8000/assetinfo/test_websocket_client

可以看到,已经可以正常得不断从websocket服务端接收到一直刷新的数据。

这里已经可以通过websocket的方式,浏览器作为客户端不断接收服务端发送过来的数据,并进行刷新。

 但是在这里有个很明显的缺点,就是没有办法在客户端对websocket进行停止处理,以及重新连接websocket的操作,下面来看看。 ”

示例2 - 使用修饰器方式,增加websocket停止以及重连功能

修改​​websocket_client.html​​,增加websocket的停止以及重连​​js​​代码

修改websocket服务端视图

@accept_websocketdef test_websocket(request): if request.is_websocket(): # 如果请求是websocket请求: WebSocket = request.websocket i = 0 # 设置发送至前端的次数 messages = {} while True: i += 1 # 递增次数 i time.sleep(1) # 休眠1秒 # 判断是否通过websocket接收到数据 if WebSocket.has_messages(): # 存在Websocket客户端发送过来的消息 client_msg = WebSocket.read().decode() # 设置发送前端的数据 messages = { 'time': time.strftime('%Y.%m.%d %H:%M:%S', time.localtime(time.time())), 'server_msg': 'send %d times!' % i, 'client_msg': client_msg, } else: # 设置发送前端的数据 messages = { 'time':time.strftime('%Y.%m.%d %H:%M:%S',time.localtime(time.time())), 'server_msg': 'send %d times!' % i, } # 设置发送数据为json格式 request.websocket.send(json.dumps(messages))

测试一下功能

通过Chrome浏览器的F12,选中Network中的WS就可以看到Websocket的交互数据的了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何利用python爬取网易新闻(python爬取人民日报)
下一篇:Python 爬取猫眼电影《无名之辈》并对其进行数据分析(python培训)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~