reactjs - Websocket、React + Django

标签 reactjs django websocket

我很好奇是否有关于使用 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 模板呈现,并通过 Channels 使用 Websocket。

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

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

编辑不太优选的选项 3:在大多数应用程序中使用 React、Node 和 Express,包括仅针对 Python 真正擅长的东西(例如 ML 管道)的 Websockets 和 DRF。

最佳答案

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

不久前,我创建了一个示例项目,该项目使用:

  • 用于后端的 Django(Django Rest Framework、Django Channels 和 Celery),
  • React 前端(通过 ws 与 REST API 和 WebSocket 通信)

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

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

  • nginx 服务 React
  • wsgiserver 提供 REST API
  • asgiserver 提供 websocekts
  • 用于 Celery 的rabbitmq 和 redis
  • Celery 的工作人员和听众

该项目正在对两个数字进行简单求和并进行 sleep 。该任务是使用 Celery 在后台计算的,我使用 websockets 实时沟通进度(每休眠 1 秒,更新就会发送给客户端)。

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

关于reactjs - Websocket、React + Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71506466/

相关文章:

javascript - 通过 AJAX 发布 Django 表单集

django - Rabbitmq celeryd celerybeat 不作为守护进程在生产中执行任务

ruby - 使用什么异步 Ruby 服务器?

angular - Angular 如何使用 Golang 和 websockets 管理 URL?

javascript - WebSocket 连接到 'wss://localhost:44300/Home/websocketcon' 失败 : Error during WebSocket handshake: Unexpected response code: 404

reactjs - 将整个状态从 redux 传递给组件有什么缺点吗?

javascript - 在 React 中检索多个子组件的状态

javascript - React 无状态功能组件和组件生命周期

javascript - 在react语义ui中为每个选定的下拉项目着色

Django Admin list_filter 和带注释字段的排序