Django 使用websocket

  • 下载第三方库channels
    channels库对于websocket有着良好的支持,下载完在settings中注册,在使用时要在应用中生成两个文件:consumers.py和routing.py配置文件,consumers即视图,routing就是路由,一个视图对应一个路由。

  • 实现长连接管道型通讯,还需要下载channels_redis库

  • 因为djngo使用的是wsgi所有在使用channels时还需要配置asgi设置

  • 在django2.2以上版本会内置支持ASGI

import os

from channels.routing import ProtocolTypeRouter
from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的app名.settings')

application = ProtocolTypeRouter({
   
    "http": get_asgi_application(),
    # Just HTTP for now. (We can add other protocols later.)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django可以使用第三方库来实现WebSocket功能,常用的有Django Channels和django-websocket-redis。 这里以Django Channels为例,步骤如下: 1. 安装Django Channels ``` pip install channels ``` 2. 创建一个新的Django项目 ``` django-admin startproject myproject ``` 3. 创建一个新的Django应用程序 ``` python manage.py startapp myapp ``` 4. 在myapp中创建一个名为consumers.py的文件,用于处理WebSocket请求 ```python from channels.generic.websocket import WebsocketConsumer import json class MyConsumer(WebsocketConsumer): def connect(self): self.accept() def disconnect(self, close_code): pass def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] self.send(text_data=json.dumps({ 'message': message })) ``` 5. 在myproject的settings.py文件中添加Channels配置信息 ```python INSTALLED_APPS = [ # ... 'channels', 'myapp', ] ASGI_APPLICATION = 'myproject.routing.application' ``` 6. 创建一个名为routing.py的文件,用于定义路由规则 ```python from django.urls import re_path from myapp.consumers import MyConsumer websocket_urlpatterns = [ re_path(r'ws/myurl/$', MyConsumer.as_asgi()), ] ``` 7. 在myproject的urls.py文件中包含路由规则 ```python from django.urls import path, include from django.contrib import admin from .routing import websocket_urlpatterns urlpatterns = [ path('admin/', admin.site.urls), path('myapp/', include('myapp.urls')), ] # Add WebSocket URL to urlpatterns urlpatterns += websocket_urlpatterns ``` 现在,你可以使用JavaScript来连接WebSocket并发送消息了。在前端代码中,可以使用以下代码: ```javascript const socket = new WebSocket('ws://localhost:8000/ws/myurl/'); socket.onopen = function(e) { console.log('WebSocket connected.'); }; socket.onmessage = function(event) { const data = JSON.parse(event.data); console.log('Received message:', data.message); }; socket.onclose = function(event) { console.log('WebSocket disconnected.'); }; socket.send(JSON.stringify({ 'message': 'Hello, server!' })); ``` 这是一个简单的示例,你可以根据自己的需求添加更多功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值