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

django websocket

目录
在这里插入图片描述

核心代码
consumers.py

from channels.generic.websocket import WebsocketConsumer
from channels.exceptions import StopConsumer
import datetime
import time
from asgiref.sync import async_to_sync
class ChatConsumer(WebsocketConsumer):def websocket_connect(self, message):# 有客户端像后端发送websocket连接的请求时候,自动触发# 服务端允许和客户端创建连接self.accept()def websocket_receive(self, message):# 浏览器基于websocket想后端发送数据,自动触发接受消息print(f"接收到消息了:{message}")self.send("不要回复不要回复",datetime.datetime.now())#self.close() 这个是服务端主动断开连接def websocket_disconnect(self, message):# 客户端与服务器断开连接是,自动触发print("关闭连接")raise StopConsumer

tests.py

import requests
url='http://127.0.0.1:8000/info/'
response=requests.post(url=url,json={'name':'张无忌','info':'太极'})
print(response.text)
``
views.py```python
from django.shortcuts import render
from django.http import request,JsonResponse# Create your views here.def index(request):return render(request,'index.html',locals())def info(request):if request.method=='POST':print(request.body.decode())return JsonResponse({'status':'success'})

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="/static/jquery-3.6.1.min.js"></script>
</head>
<body>
<div id="message">
<div><input type="text" placeholder="请输入" id="txt"><input type="button" value="发送" onclick="sendMessage()">
</div>
</div>
<script>socket=new WebSocket("ws://127.0.0.1:8000/ws/group/")function sendMessage() {socket.send($("#txt").val())$("#txt").val('')}socket.onmessage=function  (event){console.log("接收到消息了收到了吗")console.log(event.data)}socket.onclose=function (event){console.log("断开连接")}
</script>
</body>
</html>

asgi.py

import osfrom django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter,URLRouter
from dchannel import  routingos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dchannel.settings')# application = get_asgi_application()
application=ProtocolTypeRouter({"http":get_asgi_application(),#自动去找urls.py,会找路由和视图函数-->http请求"websocket":URLRouter(routing.websocket_urlpatterns)#routing(urls),consumers(views)
})

routing.py

from django.urls import re_path
from app01 import  consumers
websocket_urlpatterns={re_path(r'ws/(?P<group>\w+)/$',consumers.ChatConsumer.as_asgi())
}

urls.py

from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [path('admin/', admin.site.urls),path('index/',views.index),path('info/',views.info)
]

下载

http://www.lryc.cn/news/273568.html

相关文章:

  • HackTheBox - Medium - Linux - Bagel
  • Capsolver:解决Web爬虫中CAPTCHA挑战的最优解决方案
  • 大数据系列之:读取parquet文件统计数据量
  • 力扣题:字符串变换-1.5
  • el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端
  • 2024年度 ROTS - 实时操作系统 Top 15
  • 苹果怎么同步备忘录?教程来了,干货满满!
  • Nginx(十八) 性能调优之 - 哪些层面可以进行优化
  • OpenStack云计算(三)neutron
  • Linux期末复习笔记
  • PHP实现多继承
  • pulsar原来是这样操作topic的
  • 日常工作 经验总结
  • 【Proteus仿真】【Arduino单片机】水箱液位监控系统
  • 【已解决】若依系统前端打包后,部署在nginx上,点击菜单错误:@/views/system/role/index
  • Java中compareTo方法使用
  • 【霹雳吧啦】手把手带你入门语义分割の番外11:U2-Net 源码讲解(PyTorch)—— 代码的使用
  • 威尔仕2023年的统计数据
  • Spring——Spring基于注解的IOC配置
  • spring常用注解(一)springbean生命周期类
  • 【软件测试】2024年准备中/高级测试岗技术面试...
  • 第11课 实现桌面与摄像头叠加
  • SAP 检验批状态修改(QA32质检放行报错:BS002 不允许 “访问使用决定“ (INL 101105415 ))
  • 华为交换机如何同时配置多个端口参数
  • Mybatis之多表查询
  • 部署node.js+express+mongodb(更新中)
  • 百度CTO王海峰:文心一言用户规模破1亿
  • 简单最短路径算法
  • 答案解析——C语言—第3次作业—算术操作符与关系操作符
  • 【数据结构】二叉树的链式实现