【Python/前端】Django创建ws/websocket接口 并供前端(vue)消费
一、后端
python、django(channels)
1.1、安装channels
pip install channels
pip install channels_redis
1.2、配置项目settings.py文件中的INSTALLED_APPS值
新增channels、项目主站名称
1.3、配置项目settings.py文件中新增ASGI_APPLICATION
1.4、在APP(子站)中新建routing.py文件
from django.conf.urls import url from myChat.conView import ChatService websocket_urlpatterns = [ url(r"ws/", ChatService()), ]
1.5、在APP(子站)中新建conView.py文件
import json import time from channels.generic.websocket import WebsocketConsumer class ChatService(WebsocketConsumer): # 当Websocket创建连接时 def connect(self): print("已连接") self.accept() # 每隔2秒给前端发送数据 for i in range(10): time.sleep(2) self.send(text_data=json.dumps({ 'code': 200, 'message': "djhafkja" })) # 当Websocket接收到消息时 def receive(self, text_data=None, bytes_data=None): print("已收到消息") # 当Websocket发生断开连接时 def disconnect(self, code): print("已断开")
1.6、在项目(主站)中新建routing.py文件
from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter import myChat.routing application = ProtocolTypeRouter({ "websocket": AuthMiddlewareStack( URLRouter( myChat.routing.websocket_urlpatterns ) ), })
1.7、启动
python .\manage.py runserver
二、前端
vue
initWebSocket() { this.websock = new WebSocket("ws://127.0.0.1:8000/ws/"); this.websock.onmessage = this.WebSocketOnMessage; this.websock.onopen = this.WebSocketOnOpen; this.websock.onerror = this.WebSocketOnError; this.websock.onclose = this.WebSocketOnClose; }, WebSocketOnMessage(e) { this.msg.push(JSON.parse(e.data).message); console.log("WebSocketOnMessage"); console.log(e); console.log(JSON.parse(e.data).message); }, WebSocketOnOpen(e) { console.log("WebSocketOnOpen"); console.log(e); }, WebSocketOnError(e) { console.log("WebSocketOnError"); console.log(e); }, WebSocketOnClose(e) { console.log("WebSocketOnClose"); console.log(e); console.log(e.code); },
三、效果
如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-01-07 【IDEA】+创建一个maven项目并发布部署
2020-01-07 【远程仓库】+maven仓库jar包管理/自制maven包上传至公共仓库
2020-01-07 【模板】+【测试工作文档模板】+3交付测试用例
2020-01-07 【模板】+【测试工作文档模板】+2测分
2020-01-07 【模板】+【测试工作文档模板】+1测试策略&测试计划
2020-01-07 【Java】+操作数据库