django-channels,Django channel

  django-channels,Django channel

  本文主要介绍了姜戈通道使用和配置及实现群聊,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  

目录

1.1网络插座原理1.2django框架小结2.0 实现群聊2.1 群聊(一)2.2 群聊(二)

 

  

1.1WebSocket原理

 

  超文本传送协议(超文本传输协议的缩写)协议

  连接数据传输断开连接求转发到协议,是建立在超文本传送协议(超文本传输协议的缩写)协议之上的。

  连接,客户端发起。握手(验证),客户端发送一个消息,后端接收到消息再做一些特殊处理并返回。服务端支持求转发到协议。

  

1.2django框架

 

  框架默认不支持websocket,需要安装组件:

  点安装通道

  配置:

  注册通道

  INSTALLED_APPS=[

   django.contrib.admin ,

   django.contrib.auth ,

   django.contrib.contenttypes ,

   django.contrib.sessions ,

   django.contrib.messages ,

   django.contrib.staticfiles ,

  频道,

  ]

  在settings.py中添加asgi _应用

  ASGI _ APPLICATION= ws _ demo。阿斯吉。应用程序

  修改asgi.py文件

  导入操作系统

  从django.core.asgi导入获取_ asgi _应用程序

  来自通道.路由导入协议类型路由器,网址路由器

  从。导入路由

  OS。环境。设置默认值( DJANGO _ SETTINGS _ MODULE , ws_demo.settings )

  # application=get _ asgi _ application()

  应用程序=协议类型路由器({

  http: get_asgi_application(),

  web socket : URL路由器(路由。web socket _ URL模式),

  })

  在settings.py的同级目录创建routing.py

  从django.urls导入重新路径

  从app01导入消费者

  websocket_urlpatterns=[

  re_path(rws/(?Pgroupw )/$ ,消费者ChatConsumer.as_asgi()),

  ]

  在app01目录下创建消费者。py,编写处理处理求转发到的业务逻辑。

  从channels.generic.websocket导入WebsocketConsumer

  从通道。异常导入停止消费者

  类聊天消费者(WebsocketConsumer):

  定义websocket_connect(自身,消息):

  # 有客户端来向后端发送求转发到连接的请求时,自动触发。

  # 服务端允许和客户端创建连接。

  自我接受()

  定义websocket_receive(自身,消息):

  # 浏览器基于求转发到向后端发送数据,自动触发接收消息。

   print(message)

   self.send("不要回复不要回复")

   # self.close()

   def websocket_disconnect(self, message):

   # 客户端与服务端断开连接时,自动触发。

   print("断开连接")

   raise StopConsumer()

  

  

 

  

小结

 

  基于django实现websocket请求,但现在为止只能对某个人进行处理。

  

 

  

2.0 实现群聊

 

  

 

  

2.1 群聊(一)

 

  前端:

  

<!DOCTYPE html>

 

  后端:

  

from channels.generic.websocket import WebsocketConsumer

 

  

 

  

2.2 群聊(二)

 

  第二种实现方式是基于channels中提供channel layers来实现。(如果觉得复杂可以采用第一种)

  setting中配置 。

  

CHANNEL_LAYERS = {

 

  如果是使用的redis 环境

  

pip3 install channels-redis

 

  

CHANNEL_LAYERS = {

 

  consumers中特殊的代码。

  

from channels.generic.websocket import WebsocketConsumer

 

  好了分享就结束了,其实总的来讲介绍的还是比较浅

  如果想要深入一点 推荐两篇博客

  【翻译】Django Channels 官方文档 -- Tutorial - 守护窗明守护爱 - 博客园

  django channels - 武沛齐 - 博客园

  到此这篇关于django channels使用和配置及实现群聊的文章就介绍到这了,更多相关django channels配置内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: