Django 频道实时 API

Django Channels Realtime API

因此,我正在使用 Django REST Framework 为我的 React Native 应用构建一个 API。现在我想实现聊天功能,我想使用 Django Channels 通过 TCP 连接构建实时聊天功能。现在我读到我无法使用 Django Channels 构建实时 API。这是否意味着,我不能在我的服务器上使用 Django Channels 和在我的 React Native APP 中使用 this?:

var ws = new WebSocket('ws://host.com/path');

ws.onopen = () => {
  // connection opened
  ws.send('something'); // send a message
};

ws.onmessage = (e) => {
  // a message was received
  console.log(e.data);
};

ws.onerror = (e) => {
  // an error occurred
  console.log(e.message);
};

ws.onclose = (e) => {
  // connection closed
  console.log(e.code, e.reason);
};

我确实没听懂,就像 HTTP(S) 连接的另一个版本或一种 :)

回答


Django REST Framework 是一个让事情变得不那么困难的框架。您也可以用纯 Django 构建一个 API 但这并不容易。所以回答这个问题:

  • Python Django REST Framework 让事情变得不那么困难
  • 您可以使用纯 Django
  • 构建 REST API
  • 您可以使用 Django
  • 构建 HTTP 或 TCP API

信息

Pure Django Django Rest Framework Django Channels
Framework for building your backend. You can also build a REST Framework with pure Django, but it isn't that easy The REST Framework makes things easier. You can easily build a nice REST API for your App or Website Django Channels helps to build a Real-time API with Django -> It brings WebSockets to Django. So you haven't fetch data, instead, Django pushes them into your APP or Website (e.g. a chat)
Can build a Rest API Can build a Rest API Can't build a Rest API
Can't build a Websocket API Can't build a Websocket API Can build a Websocket API

链接

我将 Django Rest Framework 与 Angular 一起使用,我能够利用两者的力量。您只需将频道逻辑添加到您的项目中。然后,当您部署您的应用程序时,您将通过异步协议服务器 Daphne 代理传递您的 websocket 请求,然后通过 Gunicorn 等 http 协议服务器代理传递您的 http 请求。查看我在 github 上的示例:https://github.com/ptuckett86/channel_chat