Django + websocket 连不上

看了网上的几个简单例子,一步一步做,但无一成功。都连不上websocket。

后来按一个视频教程的操作步骤来做,成功了。差别在于视频教程中加了

 pip install daphne  

和setting.py中

连不上的表现:

前端报错:

WebSocket connection to 'ws://127.0.0.1:8000/ws/some_path/' failed: 
WebSocket is closed now.

后端报错:

Not Found: /ws/some_path/
"GET /ws/some_path/ HTTP/1.1" 404 2445

 --------------------------------

原因:简单教程中默认你在开发环境中使用python manage.py runserver。理论上来说。如果你的Django项目仅使用InMemoryChannelLayer(不用Redis),且在本地开发环境中只用Django自带的runserver命令进行测试,那么通常情况下不需要额外安装Daphne或uvicorn。

InMemoryChannelLayer:

  • 这是一种内存中的通道层,主要用于开发和测试。
  • 它简单、易用,不需要外部的ASGI服务器来支持。
  • Django的runserver命令已经内置了对InMemoryChannelLayer的支持。

那为什么我在本地上runserver却还要安装Daphne呢?先不追究,暂时先按照这个方法操作。

这个问题在开发环境没有遇到,估计部署到服务器上也是会遇到的。

-------------------------

ASGI 服务器能够处理 WebSocket 等协议,而 Django 自带的 WSGI 服务器(runserver)只能处理 HTTP 协议。

------------------------

pip install channels 跟 pip install channels[daphne] 的区别:后者除了安装 channels 之外,还会额外安装 Daphne作为 ASGI 服务器如果你计划将项目部署到生产环境中,使用 pip install channels[daphne] 会更加方便,因为它直接提供了一个可用于生产的 ASGI 服务器。

注意:pip install channels daphne 并不等效于 pip install "channels[daphne]" ,前者是将channelsdaphne 是作为两个独立的包进行安装的,没有考虑 channels 在与 daphne 一起使用时可能需要的额外关联配置项、依赖项。后者同时考虑并安装可能需要的额外依赖项,确保 channelsdaphne 的集成工作良好。

在大多数情况下,如果你计划使用 channels 并且希望它与 daphne 良好地协作,建议使用 pip install "channels[daphne]"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420150.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络协议栈的实现

网络协议栈是操作系统核心的一个重要组成部分,负责管理网络通信中的数据包处理。在 Linux 操作系统中,网络协议栈(Network Stack)负责实现 TCP/IP 协议簇,处理应用程序发起的网络请求并与底层的网络硬件进行交互。本文…

[SWPUCTF 2022 新生赛]

目录 [SWPUCTF 2022 新生赛]ez_rce 什么是poc? [SWPUCTF 2022 新生赛]where_am_i [SWPUCTF 2022 新生赛]js_sign [SWPUCTF 2022 新生赛]xff ​[SWPUCTF 2022 新生赛]numgame call_user_func()函数 ::双冒号运算符 [SWPUCTF 2022 新生赛]ez_sql [SWPUCTF 2…

TortoiseGit无法安装解决方案

Win11安装TortoiseGit报错,错误码:2503,如下图: 开始-右键-Windows PowerShell(管理员)/终端 (管理员) 输入 msiexec /package 安装程序所在绝对路径, 例如 : msiexec /package D:\我的资料…

jenkins 部署应用到多个环境

在日常开发的过程中,我们经常会遇到将应用程序部署到多个环境的需求场景,如会先发布到测试环境,由测试人员进行测试,成功之后,会继续将当前应用部署到集成环境,进行集成测试,全部通过后&#xf…

RAG 聊天机器人:用 Langchain 和 Streamlit开启与 PDF 的智能对话

与大量 PDF 文档的交互如今变得前所未有地便捷与智能。想象一下,您可以轻松与您的笔记、书籍和各种文档进行无缝对话,不再需要繁琐的手动查找和处理。 这篇文章将带您逐步构建一个基于 Multi-RAG 和 Streamlit 的 Web 应用程序,该应用程序通过 AI 驱动的聊天机器人来读取、…

以实时,见未来——DolphinDB 2024 年度峰会圆满举办

2024年9月6日,“以实时,见未来”—— DolphinDB 2024 年度峰会在杭州圆满落下帷幕。本次峰会由主会场与三个专题分会场组成,众多金融机构领导与专家、行业领袖、高校与研究机构学者等近300位嘉宾共襄盛举,一同探讨数智化浪潮下金融…

基于JAVA+SpringBoot+Vue的工程教育认证的计算机课程管理平台

基于JAVASpringBootVue的工程教育认证的计算机课程管理平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接…

第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

目录 大会介绍 基本信息 合作单位 主讲嘉宾 会议组委 征文主题 ​ 参会方式 会议日程 中国-天津 | 2024年10月25-27日 | 会议官网:www.iiip.net 大会介绍 第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)将于202…

MNIST数据集内容查看

测试数据集:t10k-images-idx3-ubyte.gz(1.57 MB ,包含10,000个样本)。测试数据集标签:t10k-labels-idx1-ubyte.gz(4.43 KB,包含10,000个样本的标签)训练数据集:train-ima…

使用 Parallel 类进行多线程编码(上)

用 C# 进行多线程编程有很多方式,比如使用 Thread 对象开启一个新线程,但这已经是一种落后的写法了,现在推荐的写法是使用 Parallel 类,它可以让我们像写传统代码一样编写多线程的程序,Parallel 类有三个常用的方法如下…

PyTorch 创建数据集

图片数据和标签数据准备 1.本文所用图片数据在同级文件夹中 ,文件路径为train/’ 2.标签数据在同级文件,文件路径为train.csv 3。将标签数据提取 train_csvpd.read_csv(train.csv)创建继承类 第一步,首先创建数据类对象 此时可以想象为单个数据单元的…

在这12种场景下会使Spring事务失效--注意防范

在某些业务场景下,如果一个请求中,需要同事写入多张表的数据,但为了保证操作的原子性(要么同事插入数据成功,要么同事插入失败),例如,当我们创建用户的时候,往往会给用户…

【OpenCV-阈值与平滑处理】灰度图、HSV、图像阈值、图像平滑处理(方框滤波、均值滤波、高斯滤波、中值滤波)

1 灰度图 import cv2 # 导入 OpenCV 库,用于图像处理 import numpy as np # 导入 NumPy 库,用于数组操作 import matplotlib.pyplot as plt # 导入 Matplotlib 库,用于绘图# %matplotlib inline 是 Jupyter Notebook 特有的魔法命令&…

ABC 370 E - Avoid K Partition

原题链接:E - Avoid K Partition 题意:给长度为n的数组,将数组划分成任意份,但是每一份的总和都不能是k,问有多少种分割方法。 思路:dp,f[i],代表前i个元素满足题意的划分的总和&a…

Windows--linux共享文件夹

1、如果共享文件夹设置在Windows上面 文件夹设置 个人家里电脑通常不设置用户名密码 linux端mount命令行 mount -t cifs -o usernamewade,vers3.0 //192.168.0.143/openvswitch-2.17.10 /root/windows

适用于计算机视觉的机器学习

使用筛选器将效果应用于图像的功能在图像处理任务中非常有用,例如可能使用图像编辑软件执行的任务。 但是,计算机视觉的目标通常是从图像中提取含义或至少是可操作的见解,这需要创建经过训练以基于大量现有图像识别特征的机器学习模型。 卷积…

mysql快速定位cpu 占比过高的sql语句

mysql快速定位cpu 占比过高的sql语句 当MySQL数据库的CPU使用率异常升高时,定位导致问题的SQL语句可以通过以下步骤进行 1、使用top命令找出mysl进程中占用CPU靠前的线程 #找出mysql 的进程号 ps -ef | grep mysql#根据进程号,找出占用CPU靠前的线程号…

树莓派通过串口驱动HC-08蓝牙模块

树莓派通过串口驱动HC-08蓝牙模块 文章目录 树莓派通过串口驱动HC-08蓝牙模块一、HC-08蓝牙模块介绍二、树莓派与蓝牙模块硬件连接三、树莓派通过蓝牙控制设备 一、HC-08蓝牙模块介绍 蓝牙模块,是一种集成的蓝牙功能的PCB板,用于短距离无线通信&#xff…

避障小车—51单片机

一、小车底盘组装 根据视频的安装步骤安装 二、 电机模块开发 2.1 L9110s概述 接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1输入高电平,IA1输入低电平,【OA1 OB1…

JavaWeb【day11】--(SpringBootWeb案例)

SpringBootWeb案例 前面我们已经实现了员工信息的条件分页查询以及删除操作。 关于员工管理的功能,还有两个需要实现: 新增员工 修改员工 首先我们先完成"新增员工"的功能开发,再完成"修改员工"的功能开发。而在&quo…