当前位置: 首页 > news >正文

网站制作步骤流程图学3d建模学费一般多少

网站制作步骤流程图,学3d建模学费一般多少,做网站前端有前途么?,海外seo培训概述#xff1a; 对于Django使用channels实现websocket的功能#xff0c;之前就写了几篇博文了。随着在项目的使用和实际维护来说#xff0c;重新设置了相关处理方法。 一般来说#xff0c;前后端都只维护一个全局的连接#xff0c;通过携带数据来判断具体的操作#x…概述 对于Django使用channels实现websocket的功能之前就写了几篇博文了。随着在项目的使用和实际维护来说重新设置了相关处理方法。 一般来说前后端都只维护一个全局的连接通过携带数据来判断具体的操作大致的业务逻辑非群聊功能 1、前端主动发起连接发送了数据给后端后端获取到数据后解析出前端需要的是啥数据查询出数据返回给前端。一次请求一次返回了 2、部分数据变化了后端需要主动告知前端让前端重新查询对应的数据。(实时更新数据) 一、依赖 python3.9.0 包 pip install channels3.0.0 pip install daphne3.0.2 pip install redis4.6.0 pip install channels-redis3.1.0 django-cors-headers3.5.0 项目结构 项目名 apps user websocket routings.py consumers.py update.py send_date.py __init__.py 项目名 settings.py asgi.py urls.py wsgi.py __init__.py manage.py 二、settings.py设置 #注册channels INSTALLED_APPS [...channels, # django通过其实现websocket ]WSGI_APPLICATION HeartFailure.wsgi.application#channels使用需要添加ASGI_APPLICATION ASGI_APPLICATION HeartFailure.asgi.application#使用channel_layers需要配置通道 CHANNEL_LAYERS {default: {#1、使用内存作为通道开发使用BACKEND: channels.layers.InMemoryChannelLayer,#2、使用redis上线使用# BACKEND: channels.layers.RedisChannelLayer,# CONFIG: {# hosts: [(localhost, 6379)],# },} }#####1、 cors资源跨域共享配置 CORS_ORIGIN_ALLOW_ALL True CORS_ALLOW_METHODS (DELETE,GET,OPTIONS,PATCH,POST,PUT,VIEW, )CORS_ALLOW_HEADERS (XMLHttpRequest,X_FILENAME,accept-encoding,authorization,content-type,dnt,origin,user-agent,x-csrftoken,x-requested-with,Pragma,token #请求头允许自定义的字符串 ) 三、创建websocket包 概述将所有的wesocket相关的请求都放到一个包集中管理。 websocket包下创建 routings.py 存放websocket请求相关的路由信息 consumers.py 存放websocket请求处理的类 update.py 数据变化时服务器主动通知前端更新数据 send_data.py 前端发起请求时返回的数据 1、consumers.py from channels.generic.websocket import WebsocketConsumer from channels.exceptions import StopConsumer from asgiref.sync import async_to_sync import time import json # 接收到前端的websocket请求直接向单个发送需要数据 from apps.websocket.send_data import base_sendclass AllDataConsumers(WebsocketConsumer):# 统一的房间名room_name chat_all_datadef connect(self):cls AllDataConsumersself.room_group_name cls.room_name# 加入到房间组内 self.channel_name是当前async_to_sync(self.channel_layer.group_add)(self.room_group_name, self.channel_name)headers self.scope[headers]print(headers)token Nonefor key, value in headers:if key btoken:token value.decode(utf-8)print(token)# 同意创建连接self.accept()def disconnect(self, close_code):print(有浏览器退出了websocket!!!!)# Leave room groupasync_to_sync(self.channel_layer.group_discard)(self.room_group_name, self.channel_name)# Receive message from WebSocketdef receive(self, text_dataNone, bytes_dataNone)::param text_data: 接收字符串类型的数据:param bytes_data: 接收bytes类型的数据:return:如果是浏览器直接请求时就单独给这个浏览器返回结果无需给房间组内的发送数据try:text_data_json json.loads(text_data)the_type text_data_json.get(type, none)except Exception as e:self.send(json.dumps({code: 400, msg: 传递的数据请按照{type:xx,id:x,params:{}}格式}, ensure_asciiFalse))self.disconnect(400)return#1、前端主动请求websocket时拿到对应的数据单独给该websocket返回数据send_data base_send(text_data_json)if isinstance(send_data,dict):#需要给请求的前端返回数据self.send(json.dumps(send_data, ensure_asciiFalse))else:#无需给请求的前端返回数据pass# 2、将数据发送到房间组内 (在非聊天模式无需这样操作)# async_to_sync(self.channel_layer.group_send)(# self.room_group_name, {type:send_to_chrome,data:send_data}# )参数说明self.room_group, 给哪个房间组发送数据{type:send_to_chrome,data:send_data}send_to_chrome 是处理函数在这里负责将房间组内的数据发送给浏览器send_data 要发送的数据# 自定义的处理房间组内的数据实时推送就是使用这个来实现的def send_to_chrome(self, event):try:data event.get(data)# 接收房间组广播数据将数据发送给websocketself.send(json.dumps(data, ensure_asciiFalse))except Exception as e:print(给全局的websocket推送消息失败) 2、send_data.py def base_send(data:dict):功能发起websocket请求时给当前websocket返回数据:param data: {type:要操作的数据类型,id:有id就是指定每个数据,params:{page:页码,page_size:页面大小, }}:return:the_type data.get(type)id data.get(id)send_data {type:the_type,data:返回的数据}#用户管理-搜索功能用户信息是实时更新的if the_type search_user_data:#前端发起websocket请求时此类型时无需返回数据return send_data 3、update.py #channels包相关 from asgiref.sync import async_to_sync from channels.layers import get_channel_layerclass AllDataConsumersUpdate:功能在http视图中给房间组chat_all_data 推送指定的消息def _make_channel_layer(self,send_data)::param send_data: 在http视图中查询好的数据要给房间组内所有的websocket对象发送数据channel_layer get_channel_layer()#拿到房间组名group_name chat_all_data#给该房间组组内发送数据 注意是group_send方法async_to_sync(channel_layer.group_send)(group_name, #房间组名给这个房间组发送数据{type:send_to_chrome, #处理这个房间组的消费者类必须有send_to_chrome方法data:send_data #要发送给websocket对象的数据})send_to_chrome: 该房间组对应的消费者必须存在这个函数在这个函数中进行将数据发送给房间组所有的websocket对象send_data : 查询出来的数据#用户管理-搜索用户页面-实时更新数据由前端自己去获取数据def search_user_data(self):send_data {type:search_user_data,page_update:1}#给房间发送数据self._make_channel_layer(send_datasend_data)return True4、routings.py from django.urls import path from . import consumers# 这个变量是存放websocket的路由 socket_urlpatterns [path(socket/all/,consumers.AllDataConsumers.as_asgi()),] 四、修改settings.py同级的asgi.py文件 asgi.py import osfrom django.core.asgi import get_asgi_application#新的模块 from channels.routing import ProtocolTypeRouter, URLRouter # 导入websocket的路由模块 from apps.websocket import routings#项目名settings.py所在的目录名 os.environ.setdefault(DJANGO_SETTINGS_MODULE, 项目名.settings)application ProtocolTypeRouter({# http路由走这里http: get_asgi_application(),# chat应用下rountings模块下的路由变量socket_urlpatterns,就是存路由的列表websocket: URLRouter(routings.socket_urlpatterns) })五、在视图函数中怎么发送websocket通知 from apps.websocket.update import websocket_update_obj #websocket推送数据的接口#在视图函数中直接调用需要的方法就可以实现推送了 websocket_update_obj.search_user_data() 将所有的推送方法都放到一个类中可以很方便的进行管理后期修改时也可以实现统一的修改。 六、启动项目 python manage.py runserver 8005 看到 ASGI/Channels Version xxx 就说明启动成功此时的django项目才支持websocket 七、测试 访问EasySwoole-WebSocket在线测试工具 1、服务地址http://127.0.0.1:8005/socket/all/ 2、点击连接 3、发送数据{type:search_user_data} 4、点击发送
http://www.hkea.cn/news/14515514/

相关文章:

  • 网站做加QQ群链接二维码创意设计
  • 做网站要服务器吗大朗做网站公司
  • 加强网站的建设淘宝联盟的网站怎么自己做
  • 上海手机站网站建设天津开发区建设工程管理中心网站
  • 鹿泉城乡建设局网站网站运营托管方案
  • 1号店网站模板下载深圳网络开发
  • 品牌网站建设968经典软文案例分析
  • 抖音网站建设的基本情况制作微信小程序公司
  • 苏州做网站最好公司哪家好做微商海报的网站
  • 云南省网站备案要求wordpress侧边栏折叠
  • 旅行网站建设下载期货行情软件
  • 做网站用什么软件知乎温州专业手机网站制作多少钱
  • php 网站响应时间深圳跑网约车怎么样
  • 电脑怎么下载网页视频seo站长之家
  • 石狮网站建设公司西宁网站制作
  • 南阳企业网站推广wordpress放在二级目录下
  • 深圳建设网站费用明细网站开发目前用的是什么语言
  • c 做网站网站蚌埠做网站多少钱
  • 新网站百度收录淘客WordPress主题
  • 北京做网站哪家专业平面设计有哪些公司
  • 平面设计欣赏网站推荐黄页直播免费观看大全网站
  • 怎么自己电脑做网站服务器wordpress图片防盗链插件
  • 做logo网站织梦快速建站
  • 下载别人做的ppt的网站台州网站制作报价
  • 如何做网站店铺wordpress中文安装教程
  • 正规的网站制作优化大师最新版本
  • 自己做的网站怎么挂网上建网站需要哪些知识
  • 免费做外贸的网站建设品牌seo推广咨询
  • 龙岗 网站建设深圳信科星沙网站制作
  • 无锡建设银行官网招聘网站wordpress 简洁博客