【问题标题】:Websockets, React + DjangoWebsockets,反应 + Django
【发布时间】:2022-09-30 16:21:48
【问题描述】:

我很好奇是否有关于使用 Websockets、React 和 Django 的明确答案。

从我读过的内容来看 (1) 将 React 与 Django 链接的首选方法是使用 Django Rest Framework (DRF)。(2) 在 Django 中利用 websockets 的首选方法似乎是通过 Django Channels。 (3) 在 React 中使用 websockets 的首选方式是通过 Socket.io。

因此,将这三者联系起来似乎相当困难。我看到了两种可能的解决方案,它们都可能无效。

  1. React 使用 Socket.io 并通过 DRF 与后端进行通信。
  2. React 是通过 Django 模板呈现的,而 websocket 是通过 Channels 来利用的。

    我想#2 是更令人头疼的路径,因为 Django 是非常固执己见的框架。

    关于 Websockets、React 和 Django 应该如何一起使用,是否有明确的答案? (This question 几乎没有任何吸引力。)

    编辑不太喜欢的选项 3:对大多数应用程序使用 React、Node 和 Express,包括 websockets 和 DRF,仅用于 python 真正闪耀的东西(例如 ML 管道。)

    标签: reactjs django websocket


    【解决方案1】:

    使用 websockets、React 和 Django 没有明确的答案(我认为不应该)。这些是不同的技术,尽管它们可以很好地连接起来。如何连接它们取决于您。最好的方法是使用它们以最简单的整体架构来实现您的项目要求。

    前段时间我创建了一个示例项目,它正在使用:

    • Django 用于后端(Django Rest Framework、Django Channels 和 Celery),
    • React for frontend(使用ws与REST API和WebSockets通信)

    该项目在 GitHub 上可用:https://github.com/pplonski/simple-tasks

    该项目使用docker-composedocker-compose.yml 文件)部署,并具有以下组件:

    • nginx 服务于 React
    • wsgiserver 服务于 REST API
    • wsgi 服务器服务 websockets
    • 用于 Celery 的rabbitmq & redis
    • 芹菜的工人和听众

    该项目正在做两个数字和睡眠的简单相加。该任务是在 Celery 的后台计算的,我使用 websockets 进行有关进度的实时通信(每 1 秒睡眠更新被发送到客户端)。

    React+Django 是我的首选堆栈,因为我从事许多数据科学/机器学习项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2013-02-18
      • 1970-01-01
      • 2021-02-23
      • 2018-11-24
      相关资源
      最近更新 更多