0


3

Twitterのような絶えず更新されるフィードを作成する

私は自分のアプリに、TwitterではなくTwitterのようなものを持ちたいと思っています。 基本的には、人々がメッセージを送信でき、アカウントを必要としない場所です。 送信できるのはアプリを使用する場合のみです。 他のアプリユーザーに、送信されたメッセージをほぼすぐに見てもらいたい。 プッシュ通知はそのような作業を実行できると考えていますが、これにはプッシュ通知が必要ですか? Twitterはどのようにそれを行いますか?

  • EDIT — 

いくつかの応答を読んだ後、プッシュが必要な場合があります。 人々は私のサーバーに頻繁にメッセージを送信します。 フィードを視聴している場合、使用しているクエリによっては、1分ごとに1つの新しいメッセージが表示される場合があります。 私は、MySQLデータベース(手間をかけずに安価なWindows以外のサーバーに切り替えることができる)を使用し、通知をプッシュすることを考えています。 これらが私のシナリオで機能しない理由はありますか?

4 Answer


3


アプリが閉じている間に新しいメッセージを受信できるようにする場合にのみ、プッシュ通知を_need_します。

これを行う1つの方法の大まかな説明は次のとおりです。アプリはHTTP Post経由でサーバーにメッセージを送信します。 サーバーは、iPhoneの一意のIDを識別子として使用して、メッセージをデータベースに保存します。 アプリはサーバーに頻繁に接続し、新しいメッセージを要求します。 新しいメッセージがある場合、サーバーはメッセージをアプリに渡し、アプリはそれを表示します。

これは、ほぼtwitter / iphone twitterアプリの機能です。


1


XMPPをご覧ください。

Twitterは、イベントをリアルタイムでiPhoneにプッシュしません。 これは、さまざまなクライアントによるポーリングに似ています。

ラストマイルの瞬間を本当に望む場合は、プッシュを使用します。


1


あなたの選択はかなりバイナリです:

  1. プッシュ通知を使用する

  2. ポーリングを使用する

プッシュ通知あり:

  • ユーザーに連絡するタイミングを管理します…​ 重い負荷はあなたができることを意味します インフラストラクチャに負担をかけないように更新を遅くする

  • 逆に、そこにいないクライアントにプッシュする必要があります もう(したがって、ある種のレジスタモデルが必要な場合があります)、高負荷はクライアントがすぐに更新されないことを意味する場合があります

  • AmazonのEC2のようなものを活用できます より多くの処理能力を提供する

  • 容量が不足していない限り、ユーザーはほぼ確実に 更新が発生したときに受信する

  • オフライン中に見逃したメッセージをピックアップするには、サーバーが知る必要があります 最後に正常に受信されたメッセージ、古いメッセージの保存、一度に多くのメッセージの転送

ポーリングを使用する場合:

  • ポーリングするには安定したアドレスが必要です

  • クエリの接続をすばやく確認する機能が必要です 新しいデータの場合、必要に応じてそのデータを返します。

  • あなたのアプリケーションが十分に人気になると、あなたが持っていないことに気付くかもしれません 十分なリソース

  • リソースが課税された場合、アプリケーションはダウンします ただ遅くなる

  • クライアントを登録して、オンライン/オフラインを追跡する必要はありません。 状態

  • オンザフライでの並列化は少し複雑です

  • 古いメッセージを取得するには、クライアントはいつメッセージが最後になるかを知る必要があります メッセージを受信し、その時間以降にサーバーにメッセージを送信するように要求する

どちらも高速ですが、帯域幅と処理プロファイルが異なります。 リアルタイムのすべてをプッシュすることを好みます。


0


Twitterは多数のサーバーとRAIDアレイを使用して、140文字のメッセージを投稿する何百万もの人々の負荷を処理します。 Twitterクライアントはログインして、特定の時間枠内でユーザーがフォローしているすべてのユーザーの更新リストを要求します。

プッシュは "ツイート"を保持しないため、これには適していません。 これは単なる通知メカニズムです。 App Storeにはテキストメッセージアプリ(Ping!と呼ばれます)があり、これはテキストメッセージを送信するためにプッシュ通知に完全に依存しています。 これはうまく機能しているように見えますが、開発者がメッセージを追跡している場合は、すべてサーバーで実行されます。 彼らの場合、ユーザーに新しいメッセージを警告したいので、プッシュは理にかなっています。 ただし、twitterクローンの場合、誰かがツイートするたびに新しい通知を受け取ると、ユーザーを困らせるだけでしょう。

最終的には、サーバー側に実装してから、ユーザーがフォローしている人の最新のツイートをログインして取得するiPhoneクライアントを開発する方が良いでしょう。