React Django WebSocket 连接挑战

2024-03-20

我面临的挑战是尝试将 Django 后端与 React 前端应用程序连接起来。 我收到的错误是:

WebSocket connection to 'ws://localhost:8000/ws/week/' failed: _callee$ @ Week.jsx:77

这是 Week.jsx 代码:

export default function Week(props) {
  const [scoops, setScoops] = useState([]);
  const ws = useRef(null);

  useEffect(async () => {
    ws.current = new WebSocket("ws://" + window.location.host + "/ws/week/");
    ws.current.onopen = () => console.log("ws opened");
    const res = await fetch("/api/scoops/week/");
    const data = await res.json();
    setScoops(data);
  }, []);

  const rows = [];

  for (let i = 0; i < scoops.length; i++) {
    rows.push(createData(i, scoops[i]?.rank, scoops[i]?.title, scoops[i]?.url));
  }

  return <Base rows={rows} duration="Week" />;
}

这是服务器终端日志:

System check identified no issues (0 silenced).
December 08, 2021 - 10:59:59
Django version 3.2.8, using settings 'app.settings'
Starting ASGI/Channels version 3.0.4 development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
HTTP GET /week/ 200 [0.02, 127.0.0.1:62685]
HTTP GET /api/scoops/week/ 200 [0.14, 127.0.0.1:62685]
WebSocket HANDSHAKING /ws/week/ [127.0.0.1:62695]
WebSocket DISCONNECT /ws/week/ [127.0.0.1:62695]

任何帮助将不胜感激。

谢谢你!


该错误是由于我的服务器代码不接受来自前端的连接造成的。将以下代码添加到consumer.py 修复了该问题:

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.accept()

还对routing.py进行了更改,现在看起来像这样:

from django.urls import re_path

from . import consumers

websocket_urlpatterns = [
    re_path(r"ws/week/", consumers.ChatConsumer.as_asgi()),
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Django WebSocket 连接挑战 的相关文章

随机推荐

  • 如何在 PySpark 中过滤 MapType 中的键?

    给定一个如下的 DataFrame 是否可以过滤掉 Column 的一些键收藏PySpark 中的 MapType StringType StringType True 同时保持架构完整 root id string nullable tr
  • Common Lisp 中的属性列表是否引用某些全局状态?

    下面的代码有z作为局部变量 但它的行为就像全局变量一样 defun foo m let z stuff nil push m getf z stuff print z foo 1 foo 2 foo 3 我希望输出是 STUFF 1 STU
  • GLFW 的线程设置

    我开始使用新的 Lwjgl 3 它使用 GLFW 进行显示 鼠标 键盘处理 我真的很喜欢它 然而今天我碰上了砖头 我有一个简单的渲染动画 但是当我拖动屏幕时 它停止渲染 直到我再次放开 According to http www glfw
  • MySQL 视图中的 BLOB 而不是正确的数据

    我使用创建了一个 MySQL 视图UNION ALL从两个表中 这样我就可以为这些表中的相同数据获得相同的列名 即tbl1 author2 AS translator tbl2 translator AS translator 等等 问题是
  • JavaScript 中的字谜查找器

    我应该用 JavaScript 编写一个程序来查找所提供的一系列单词中的所有字谜 例如 monk konm nkom bbc cbb dell ledl llde 输出应分为几行 1 monk konm nkom 2 bbc cbb 3 d
  • java读取远程文件需要用户名和密码

    我正在尝试用java读取远程文件 File f new File 192 168 1 120 home hustler file txt 远程计算机需要用户名和密码才能访问该文件 有没有办法可以通过java代码传递参数并读取文件 packa
  • 启用/禁用时的 JTextField 背景颜色

    当它被禁用时 我将 JTextField 的背景颜色更改为黑色 我这样做是使用UIManager以及我在应用程序启动时设置的这个属性 TextField disabledBackground 我想知道再次启用 JTextField 时如何更
  • 使用带有括号的 my 并且只有一个变量

    我有时会看到这样的 Perl 代码 my variable blah 在单个变量两边加上括号有什么意义 我认为括号仅在声明多个变量时使用 例如 my var1 var2 var3 blah 出现差异时有以下几种情况 When array在右
  • Javadoc 失败,找不到 java.lang.FunctionalInterface 的类文件

    我正在尝试使用 Android Studio 生成 Javadoc 在 Eclipse 下工作正常 但在 Android Studio 下出现错误 javadoc 错误 com sun tools doclets internal tool
  • 计算三级缓存的实际/有效CPI

    a 给定一个具有两级高速缓存 L1 和 L2 的内存系统 以下是规格 L1缓存命中时间 2个时钟周期 一级缓存命中率 92 L2 缓存的未命中惩罚 L2 的命中时间 8 个时钟周期 二级缓存命中率 86 主存丢失惩罚 37 个时钟周期 暂时
  • 带有加载指示器的 UISearchController

    我实施了UISearchController我正在从 js 回调获取数据 但是当我录入searchbar放入数据需要一些时间 所以我想知道如何实现加载indicator进入表查看结果UISearchController 用 Swift 3
  • javascript jquery 单选按钮单击

    我有 2 个单选按钮和 jquery 正在运行
  • 核心数据:-deleteObject:崩溃,删除规则是原因吗?

    我有以下模型 如图所示 替代文本http img521 imageshack us img521 9741 schermata20100224a12251 png http img521 imageshack us img521 9741
  • jQuery 自动完成:点击返回提交表单

    我正在使用 jQuery 自动完成插件 I m not sure if there s a better way to do this var base url window location href slice 0 window loc
  • Volley 不发送带参数的 post 请求。

    我有下面的代码 Google 的 Volley Library 来向我的 php 服务器发送 POST 请求并获取结果信息 我没有检查就尝试了代码isset POST id 在 php 中并且代码运行良好 当我开始检查时 php 将跳过 i
  • 选择放置在另一个元素之后但不是立即放置的第一个元素

    怎么可能选择仅第一个元素 例如 h2 在另一个元素 例如 h1 之后 但它是不一定立即放置在 因此 element element 例如 h1 h2 不起作用 因为它选择放置的元素立即地元素之后 h1 Title1 h1 lt many t
  • jQuery 验证触发错误消息

    我有一个有点奇怪的问题 我想在元素上触发 jquery 验证错误消息 即使它是有效的 设想 我有一个大表格 输入之一是 PersonalId 可以选择输入该 PersonalId 除了该输入之外 我还有一个普通按钮 不是提交按钮 如果您单击
  • 通过 Internet 发送对象

    我定义一个类 然后设置该类类型的一个对象 我想透明地将该对象发送到另一台计算机上运行的另一个 Java 应用程序 实现这一目标的最佳技术是什么 您需要首先研究 Java 的序列化可串行化 http java sun com javase 6
  • 使用nodejs中的直通流模块使用axios发送文件

    Imports const ffmpegPath require ffmpeg installer ffmpeg path const FfmpegCommand require fluent ffmpeg const fs require
  • React Django WebSocket 连接挑战

    我面临的挑战是尝试将 Django 后端与 React 前端应用程序连接起来 我收到的错误是 WebSocket connection to ws localhost 8000 ws week failed callee Week jsx