运行环境参考
   
 1. python 3.9
 2. daphne 4.0.0
 3. channels 4.0.0
 4. Django 4
    
    
    第一步
   
安装上面的运营环境,特别是用Anaconda中,这个简单 pip install 统统解决,
    
    
    第二步
   
    打开项目的配置文件
    
     setting.py
    
    找到
    
     INSTALLED_APPS
    
    配置项,进行应用注册:
    
    如果实在不知道怎么搞,复制粘贴即可,如:
   
INSTALLED_APPS = [
    'daphne', #这是要你添加的 
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    'channels',#这是要你添加的
]
# websocket配置
ASGI_APPLICATION = '你自己的django项目名称.asgi.application' #这是要你添加的
    
    
    第三步
   
    打开django项目配置包中的
    
     asgi.py
    
    文件,进行修改:
   
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
# 导入chat应用中的路由模块
from 你的应用名称 import routings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django项目名称.settings')
application = ProtocolTypeRouter({
    # 当存在http请求时,路由走这里
    "http": get_asgi_application(),
    # 当存在websocket请求时,将请求交给指定应用中的路由模块处理
    "websocket": URLRouter(routings.socket_urlpatterns)
})
    
    
    第四步
   
    如果你有应用就直接在应用目录下创建一个
    
     routings.py
    
    文件,没有应用就先创建应用(注意创建应用还得去注册应用哦)
   
    
    
    创建应用命令
   
# 创建应用
python manage.py startapp 应用名称
    
    
    routings.py文件复制下面代码
   
from django.urls import path
# 当前文件同级目录下创建consumers.py文件
from . import consumers
# 这个变量是存放websocket的路由
socket_urlpatterns = [
    path('访问路由', consumers.方法类名.as_asgi()),
]
    
    
    第五步
   
    
     routings.py
    
    文件同级目录下创建
    
     consumers.py
    
    文件,粘贴下列代码:
   
from channels.generic.websocket import WebsocketConsumer
from channels.exceptions import StopConsumer
from asgiref.sync import async_to_sync
class 自己取个类名(WebsocketConsumer):
    def websocket_connect(self, message):
        # 客户端与服务端进行握手时,会触发这个方法
        # 服务端允许客户端进行连接,就是握手成功
        self.accept()
    def websocket_receive(self, message):
        # 接收到客户端发送的数据
        recv = message.get('text')
        print('接收到的数据,', recv)
        if recv == 'close':
            # 服务的主动断开连接
            print('服务器断开连接')
            self.close()
        else:
            # 客户端向服务端发送数据
            self.send("服务器收到你的来信")
    def websocket_disconnect(self, message):
        # 客户端端口连接时,会触发该方法,断开连接
        print('客户端断开连接')
        raise StopConsumer()
    
    
    终极步骤
   
    命令行运行项目:
    
     python manage.py runserver 0.0.0.0:8000
    
    
    验证是否成功:
    
     
   
    
    
    网站接口测试
   
    可以使用这个网站:
    
     http://www.easyswoole.com/wstool.html
    
 
版权声明:本文为weixin_42332166原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
