4

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

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

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

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

  1. 登录时,客户端发布到 API 端点
  2. 这个 POST 的处理函数检查数据库中是否已经有这个用户的频道 ID 记录。
  3. 如果是这样,它会使用新的频道 ID(即 UUID)更新记录。如果没有,它会使用该用户的 ID 和频道 ID 创建一条新记录。
  4. 将频道 ID 返回给用户。
  5. 注销时,此记录将被删除。

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

对于相关最佳实践的任何想法,我将不胜感激。谢谢!

4

1 回答 1

4

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

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

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

于 2012-08-15T19:55:23.860 回答