如何为我的 API 和我的 websocket 设置路由

Posted

技术标签:

【中文标题】如何为我的 API 和我的 websocket 设置路由【英文标题】:How do i setup routing for my API and my websocket 【发布时间】:2019-04-23 12:28:08 【问题描述】:

我正在制作一个 django/react web 应用程序,并且希望能够同时使用一个 rest api 和一个 websocket。

稍微设置一下舞台: 我有一个身份验证应用程序和一个项目应用程序以及其他一些应用程序。我希望我的身份验证应用程序使用其余框架来处理登录/注册请求,之后我希望能够使用项目应用程序 websocket 以保持事情顺利进行。但是我不知道如何设置。

后端(带有设置等的主项目应用程序)

身份验证(用于验证用户的小应用程序)(只需要休息)

项目(更大的应用程序,它使用 websockets 来做一些事情,因为它需要不断更新)

我希望有人可以提供一些详细信息或信息链接,为我指明正确的方向。或者一些代码示例

编辑 1: 所以我觉得这需要更多的澄清。 我目前正在使用 django rest 框架进行 api 设置和 django 通道用于 websocket 连接。我设法让两者分开工作,但是我的问题是,我如何设置路由以在两者之间切换。我相信我已经弄清楚了,如果更多测试证明这一点,那么我将发布我的路由,设置, urls 和其他配置作为答案

【问题讨论】:

你看过 django 频道了吗? 【参考方案1】:

如果您对所有这些都使用 django,您可能应该使用这些:

Django rest framework 对于所有其他相关的东西 - 这也处理身份验证 Django Channels 用于您的所有 websocket 内容

上述两个框架都可以开箱即用地处理身份验证,并且非常容易设置。在我看来,DRF 对于它提供的其他功能来说太容易了。

我还会花一些时间思考将所有请求集中在 Web 套接字上是否明智。根据我的经验,最好为此使用 ajax,因为您可以更轻松地整理请求和响应,因为您的 ajax 将等待来自上游的响应,而 websocket 将发送请求而不等待响应,并且上游可以发送响应您最初请求的范围。换句话说,您需要能够识别您的 websocket 历史上发出的请求以处理上游发回的消息,以便您了解如何处理消息的上下文

【讨论】:

虽然我能够分别设置 django 频道和 django rest 框架,但我仍然在为这两者设置路由时有些挣扎。我确实相信我现在有一些工作,但我不得不再搞砸一点

以上是关于如何为我的 API 和我的 websocket 设置路由的主要内容,如果未能解决你的问题,请参考以下文章

如何为 API Gateway Websocket 编写 Java Lambda 处理程序?

如何为websocket连接握手指定URL?

如何为 WebSocket(红蜘蛛)创建单例?

已解决 - 如何为 Spring 中的 WebSocket 升级请求自定义 HTTP 响应?

如何为“大数据”分析项目设置架构?

如何为我的网站创建安装文件?