gpt4 book ai didi

django - 在服务器和客户端之间设置实时推送 API channel 的好方法

转载 作者:行者123 更新时间:2023-12-01 01:16:44 25 4
gpt4 key购买 nike

我正在尝试使用 PubNub 来设置一个系统,用于将简单的实时消息从我的 Web 服务器推送到客户端。我在 Heroku 上运行 Django。

特别是,我对如何在服务器和客户端之间建立 channel 感兴趣,这需要在两者之间共享唯一的 channel ID。

我们的网站是一种社交网站——很多用户会同时登录。我们只是想要一种在他们收到新消息或好友请求之类的东西时更新他们的界面的方法,而无需刷新。

我知道该怎么做,但我认为可能有一些我不知道的最佳实践,所以我想得到一些反馈。

  • 登录时,客户端发布到 API 端点
  • 此 POST 的处理程序函数会检查数据库中是否已存在该用户的 channel ID 记录。
  • 如果是这样,它会使用新的 channel ID(这是一个 UUID)更新记录。如果没有,它会使用该用户的 ID 和 channel ID 创建一个新记录。
  • 将 channel ID 返回给用户。
  • 注销时,此记录将被删除。

  • 从技术上讲,我担心这违反了 REST 原则。对 API 端点的单个调用既可以像 POST 一样创建数据服务器端,也可以像 GET 一样将数据返回给客户端。

    如果您对相关最佳实践有任何想法,我将不胜感激。谢谢!

    最佳答案

    听起来您会受益于使用 Pusher .他们或多或少是事实上的托管 websockets 提供者,它允许您让客户端订阅(通过他们的带有套接字的浏览器)到 Pusher,监听各种 channel 。然后,您将简单的 API 调用发送到 Pusher,后者将其广播给所有连接的客户端。

    这是处理同时登录的多个客户端的实时更新的最佳方式,无需通过 AJAX 进行轮询,或滚动您自己的 websockets 内容。

    我强烈建议给 pusher 看看。 (请注意,他们的免费套餐非常慷慨。)

    关于django - 在服务器和客户端之间设置实时推送 API channel 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658319/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com