【问题标题】:Creating a constantly updating feed like Twitter创建一个不断更新的提要,例如 Twitter
【发布时间】:2010-12-17 08:00:02
【问题描述】:

我想在我的应用程序中加入一些类似于 Twitter 但不是 Twitter 的东西。基本上它将是人们可以提交消息并且不需要帐户的地方。他们唯一可以提交的方法是通过应用程序。我希望其他应用程序用户几乎可以立即看到提交的消息。我相信推送通知可以做那种工作,但我需要推送通知吗? Twitter 是如何做到的?

-- 编辑--

在阅读了一些回复之后,push 可能是我需要的。人们会经常向我的服务器提交消息。如果有人正在观看提要,他们可能会每分钟看到一条新消息,具体取决于他们使用的查询。我正在考虑使用 MySQL 数据库(它允许切换到更便宜的非 Windows 服务器而无需太多麻烦)和推送通知。是否有任何原因不适用于我的方案?

【问题讨论】:

    标签: iphone objective-c cocoa-touch twitter


    【解决方案1】:

    如果您希望应用能够在关闭时接收新消息,您只需要需要推送通知。

    以下是执行此操作的一种方法的粗略描述: 您的应用通过 HTTP Post 向您的服务器发送一条消息。 您的服务器将消息存储在数据库中,使用 iPhone 的唯一 ID 作为标识符。 您的应用程序经常连接到服务器,请求新消息。 如果有任何新消息,服务器会将消息传递给应用程序,应用程序会显示它。

    这大概就是 twitter/iphone twitter 应用程序的作用。

    【讨论】:

      【解决方案2】:

      你的选择是相当二元的:

      1. 使用推送通知
      2. 使用轮询

      有推送通知:

      • 您可以控制何时联系您的用户...负载过重意味着您可以放慢更新速度以避免对您的基础架构造成负担
      • 相反,您必须推送到可能不再存在的客户端(因此可能需要某种注册模型),高负载可能意味着客户端无法立即更新
      • 您可以利用 Amazon's EC2 之类的东西来提高处理能力
      • 除非您的容量不足,否则用户几乎肯定会在更新发生时收到更新
      • 要接收离线时错过的消息,服务器需要知道上次成功接收的消息、存储旧消息并一次转发多条消息

      如果您选择使用轮询:

      • 您必须有一个稳定的地址才能被轮询
      • 您需要能够使用大量快速查询连接检查新数据,然后在需要时返回该数据。
      • 如果您的应用程序变得足够流行,您可能会发现您没有足够的资源
      • 如果您的资源被征税,您的应用程序将会下降,而不是放慢速度
      • 您无需注册客户并跟踪他们的在线/离线状态
      • 动态并行化有点棘手
      • 要获取较旧的消息,客户端需要知道他们上次收到消息的时间,然后请求服务器发送自该时间以来的任何消息

      两者都可以很快,但它们具有不同的带宽和处理配置文件。我更喜欢推送实时的所有内容。

      【讨论】:

      • 还有第三种可能与服务器保持开放的 IP 连接。
      • 听起来像是 push 可能适合我。目前,我不需要在应用关闭时通知人们。对提要的更新可能大约需要一分钟,并且可能会变得更多。推送有好处吗?我已经更新了关于数据库的问题。
      • @jtbandes 好点。既然我们正在寻找工作,你会认为我会意识到的。多哈。 @4thSpace - 您将在一分钟内完成 NumberOfUsers 的交易。您的服务器是否可以处理这取决于您的服务器基础架构、托管、带宽等。我认为合理数量的用户不会出现任何问题。允许打开的设备注册,然后只推送给它们,直到它们停止响应新的推送,此时等待它们重新注册(因为它们可能已关闭或与世隔绝)。
      • @Dylan,谢谢。您是否发现使用 MySQL 作为后端数据库有任何问题?或者您认为还有其他更好的方法吗?
      • @4thSpace:不是这样。如果您没有做任何依赖数据库特定功能的棘手操作,您可以使用任何您喜欢的数据库。 MySQL 有很多社区支持和商业开发计划,可以在 Windows 和 Unix 上运行。所以我说去吧。
      【解决方案3】:

      可能想看看XMPP

      Twitter 并没有真正将事件实时推送到 iPhone。这更像是各种客户的轮询。

      如果你真的想要最后一英里的瞬时值,你会想要使用推送。

      【讨论】:

        【解决方案4】:

        Twitter 使用大量服务器和 RAID 阵列来处理数百万人发布 140 个字符的消息的负载。 Twitter 客户端登录并请求用户在特定时间范围内关注的所有人的更新列表。

        Push 不是一个很好的选择,因为它不会保留“推文”。它只是一种通知机制。 App Store 上有一个短信应用程序(称为 Ping!),它完全依赖推送通知来发送短信。这似乎工作正常,但如果开发人员正在跟踪消息,这一切都在他们的服务器上完成。在他们的情况下,推送是有意义的,因为您想提醒用户有新消息。然而,在 twitter 克隆的情况下,如果每次有人发推文时他们都会收到新通知,这可能只会惹恼用户。

        最后,你最好只在服务器端实现它,然后开发一个 iPhone 客户端,该客户端登录并检索用户关注的人的最新推文。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-27
          • 2012-08-24
          • 2013-03-23
          相关资源
          最近更新 更多