1

Firebaseを使用してユーザー通知システムを管理するための私のアプローチを検証できますか?

基本的に、ユーザー固有のチャネルと、通知を保持するより一般的なチャネルが必要です。これらの通知は、ユーザーが以前に表示したことがない場合、イントラネットに表示されます。

サーバー側のアクションであるという考えは、特定のユーザーまたはすべてのユーザーにブロードキャストするために、RESTAPIを使用してFirebaseエンドポイントを更新します。特定のユーザーメッセージを既読として簡単にマークできるため、再度表示することはできません。これは、私が少し苦労している一般的なブロードキャストです。

一般ブロードキャストにフラグ(ユーザーID)を追加して、その読み取りを示すこともできますが、クライアントがこのフラグの存在について過去のブロードキャストメッセージをチェックする必要があるため、パフォーマンスが心配です。ユーザーIDを追加して、より高速な新しいエンドポイントを作成できます。
たとえば/notification/ general /-メッセージが含まれている場合、これによりクライアントがトリガーされ、メッセージが表示されない場合は/ users / USERID / MessageIDが存在するかどうかが確認され、このエンドポイントが作成されます。

私が見逃しているものはありますか、それともそれが最善のアプローチですか?

4

2 に答える 2

1

すでに個別のユーザーメッセージがないので、1つのコピーを保存して誰がそれを読んだかを把握しようとするのではなく、ブロードキャストをすべての人に個別に配信する(電子メールを考えてください)のはなぜですか。

かさばりを減らすために、メッセージの内容を個別に保存し、IDをユーザーのキューに保存するだけで済みます。次に、それらが表示されたときに、追加の複雑さなしにユーザーごとにフラグを立てます。

ブロードキャストを含む1日に100件のメッセージを受信するユーザーの10万人で、標準のFirebase ID(約20文字)を使用すると、年間2億1,000万文字になります(つまり、データベースには何もありません。おそらく、実際の保存量よりはるかに少ないでしょう。メッセージ本文)、期限切れにならずに削除されないと仮定します。

于 2012-09-14T17:07:07.593 に答える
1

メッセージは常に順番に消費されますか?その場合、各クライアントに、各パブリックチャネルで最後に読み取ったメッセージのIDを記憶させることができます。次に、キューで「startAt」を使用して、新しいメッセージのみに制限することができます。

それらが順番に消費されていない場合は、どのデータが読み取られ、どのデータが読み取られなかったかに関するデータを保存する何らかの方法が必要になります。おそらく、各メッセージを全員の個人用キューに送信してから、各ユーザーに既読メッセージを削除させることができます。

于 2012-09-14T21:22:20.517 に答える