博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-websocket 安装及配置
阅读量:6873 次
发布时间:2019-06-26

本文共 4257 字,大约阅读时间需要 14 分钟。

 

1、安装 dwebsocket

(venv) C:\code_object\websocketTest>pip install dwebsocket -i https://pypi.douban.com/simple

 

2、当前项目环境

python版本

1 (venv) C:\code_object\websocketTest>python --version2 Python 3.4.4

 

django版本

1 (venv) C:\code_object\websocketTest>pip list dwebsocket2 Django (1.10)3 dwebsocket (0.5.5)4 pip (9.0.1)5 setuptools (28.8.0)6 six (1.11.0)

 

3、相关代码

urls.py

1 from django.conf.urls import url, include2 3 from websocketTest import views4 urlpatterns = [5     url(r'^websocket/', views.websocket_test),6     url(r'^echo/', views.echo),7 ]

 

views.py

1 from dwebsocket import require_websocket,accept_websocket 2 import dwebsocket 3  4 from django.http.response import HttpResponse 5 from django.shortcuts import render 6 import json 7  8 import redis 9 rc = redis.StrictRedis(host='redis_host', port=6379, db=8, decode_responses=True)10 11 12 @require_websocket  # 只接受websocket请求,不接受http请求,这是调用了dwebsocket的装饰器13 def websocket_test(request):14     message = request.websocket.wait()15     request.websocket.send(message)16 17 18 @accept_websocket   # 既能接受http也能接受websocket请求19 def echo(request):20     if not request.is_websocket():21         try:22             print('---- request.GET 数据:--->>',request.GET)23             message = request.GET['message']24             return HttpResponse(message)25 26         except Exception as e:27             print('---- 报错: e--->>',e)28             return render(request,'test_websocket/user2.html')29 30     else:31         redis_my_key = ''32         while True:33             # print(dir(request.websocket))34             # print('request.websocket.count_messages() -->', request.websocket.count_messages())35             if request.websocket.count_messages() > 0:36                 for message in request.websocket:37 38                     print('request.websocket._get_new_messages() -->', request.websocket._get_new_messages())39                     if request.websocket.is_closed():40                         print('连接关闭')41                         return HttpResponse('连接断开')42                     else:43 44                         # print('request.websocket.is_closed() -->', request.websocket.is_closed())45                         print('--- request.is_websocket() 数据:  --->>',message)46 47                         # 将数据写入数据库   {"my_uuid":"1","your_uuid":"2","message":"Hello, World!"}48                         data = json.loads(message.decode())49                         conn_type = data.get('type')50                         my_uuid = data.get('my_uuid')51                         your_uuid = data.get('your_uuid')52                         msg = data.get('message')53                         redis_my_key = 'message_{uuid}'.format(uuid=my_uuid)54                         redis_you_key = 'message_{uuid}'.format(uuid=your_uuid)55 56                         if conn_type == 'register':57                             if my_uuid and your_uuid:58                                 request.websocket.send("注册成功".encode('utf-8'))59                             else:60                                 request.websocket.send("uuid为空,链接断开".encode('utf-8'))61                                 # request.websocket.close()62                                 return HttpResponse('uuid为空,连接断开')63                         elif conn_type == 'sendMsg':64                             rc.lpush(redis_my_key, msg)65                             rc.lpush(redis_you_key, msg)66 67                         break68             elif redis_my_key:69                 data = rc.rpop(redis_my_key)70                 if data:71                     print('收到消息,立马发送data -->', data)72                     request.websocket.send(data.encode('utf-8'))73 74                 # print(dir(request.websocket))75                 # request.websocket.send(message + '这是您发来的 @@@ '.encode('utf-8'))

 

 

app02/user2.html

1  2  3      4         django-websocket 5          6         61     62     63         
64
65 输入自己的ID:
66
67
68 发送给谁的ID:
69
70 71 72 73 74

Received Messages

75
76 77
78 79

 

转载于:https://www.cnblogs.com/CongZhang/p/9916221.html

你可能感兴趣的文章
读书笔记之:Linux程序设计(第4版)(ch1-7)
查看>>
JS事件循环,MACRO TASK,MICRO TASK
查看>>
设计一个Roguelike-RPG小游戏
查看>>
非常不错的js 屏蔽类加验证类
查看>>
sencha touch 2中list如何动态添加或移除一个button
查看>>
lsjORM ----让开发变得更加快捷(二)
查看>>
iOS开发-iOS8地理位置定位
查看>>
struts2基于注解配置action
查看>>
原生爬虫(爬取熊猫直播人气主播排名)
查看>>
Resharp警告(去掉VS自动生成事件函数的警告)
查看>>
函数式编程初识篇
查看>>
如何解决vim乱码【转载】
查看>>
bzoj 4241 历史研究——分块(区间加权众数)
查看>>
上海第二天(面临着坐地铁)
查看>>
莫烦大大TensorFlow学习笔记(8)----优化器
查看>>
贝叶斯算法
查看>>
C++ 自定义控件的移植(将在其它程序中设计的自定义控件,移植到现在的系统中)...
查看>>
如何通过svg画一个大圆弧
查看>>
Simple Ant build.xml file
查看>>
架构师基本功:SOA
查看>>