【Python/前端】Django创建ws/websocket接口 并供前端(vue)消费
2023-09-11 14:16:50 时间
一、后端
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![](https://img2020.cnblogs.com/blog/1597681/202201/1597681-20220107110140373-1441573464.png)
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); },
三、效果
相关文章
- 第四百零四节,python网站第三方登录,social-auth-app-django模块,
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
- Python MySQLdb模块连接操作mysql数据库实例_python
- python基于django编写api+前端后端分离
- 小白学 Python(19):基础异常处理
- Python 和 Elasticsearch 构建简易搜索
- 使用Python实现:把字符串转换成datetime类型
- scrapy发送qq邮件,使用python模块和使用scrapy自带方法
- 【学习总结】Python-3-身份运算符 is 与 == 区别
- Python Django后台管理模板美化:使用django-simpleui模块
- Python Django 自定义Manager实现批量删除(逻辑删除)
- Python Django 参数解包及代码示例
- Python Django 多对多表设计批量插入方法示例
- Python Django related_name属性使用示例
- Python Django 设置和获取Cookie代码示例
- Python Django 配置URL的方式(url传参方式)
- Python Django通过牵引文件查看建表sql语句的命令sqlmigrate
- Python Django 注册功能代码实现
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- Python语言学习之打印输出那些事:python输出图表和各种吊炸天的字符串或图画、版权声明(如README.md)等之详细攻略
- 〖Python自动化办公篇⑳〗 - python实现邮件自动化 - 发送html邮件和带附件的邮件
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- 【数据结构与算法Python实践系列】5分钟学会经典排序算法-插入排序
- Python:mysql-connector-python模块对MySQL数据库进行增删改查
- python核心模块之pickle和cPickle解说
- python 合并k个有序链表
- python基础===Python 迭代器模块 itertools 简介
- python获取本地时间
- 为了让大家更好地学习python爬虫,我们做了一个“靶子”
- Python编程系列---初始Python编程基础
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- python工具方法 1 tensorflow简单全连接神经网络,识别minist手写数字
- 【Python实战】 ---- python 自带的 venv 虚拟环境更新 pip 失败
- Python常用内置函数(python 3.x)