3

nodejs と websockets を使用してプッシュ通知サーバーを実装しようとしています。私が実装しようとしているサーバーは、アプリ内の各ユーザーに固有の通知を送信できる必要があります (例: あなたの投稿にコメントした人など...)。サーバーは、多くのアプリを提供することもできます。そのため、サービスを利用するユーザーの数は非常に多いです。

問題は、チャンネルをどのように管理できるかです。私はインターネットでいくつかの調査を行いましたが、これに対する確実な解決策を見つけることができませんでした。この質問も同様のことを 尋ねます。しかし、明確な答えはありません。

これを実装するために私が考えた 1 つの方法は、各ユーザーごとに 1 つのチャネルを用意することです。その場合、多くのユーザーにサーバーを提供するにはうまく拡張できない可能性があります。

私が考えたもう 1 つの方法は、同じメッセージをグループにまとめてから、グループのチャネルを作成することでした。次に、ログインしているユーザーが複数のチャネルにサブスクライブする必要があり、1 人のユーザーのみを含むグループが多数存在する可能性があるという欠点があります。一方、グループ化プロセスも効率に影響します。

私の質問は、この問題を処理するための効率的な方法とは何かということです。これについての洞察を教えてください。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

2

これを実装するために私が考えた 1 つの方法は、各ユーザーごとに 1 つのチャネルを用意することです。その場合、多くのユーザーにサーバーを提供するにはうまく拡張できない可能性があります。

これは、チャネル (トピック、サブジェクト) の実装方法によって異なります。各チャネルのサブスクリプションが新しい永続的な接続をもたらす場合、これはあまりうまくスケーリングされません。ただし、チャネルがプロトコル レベルで表現されている場合は、クライアントごとに 1 つの接続を持つことでメリットが得られ、テクノロジによってチャネル上のメッセージのルーティングが適切なクライアントのみに処理されます。

私の質問は、この問題を処理するための効率的な方法とは何かということです。これについての洞察を教えてください。どんな助けでも大歓迎です。ありがとう。

そのため、単一の接続でPubSubを実装したソリューションを使用する場合、スケーリングはそれほど問題にならず (またはすぐに問題になることはありません)、各ユーザーに独自の通知チャネルをサブスクライブさせることができます。これは、この問題に対する最善の解決策であり、一般的な方法です。

Node.js を見ているので、Faye を見ることができます。チャンネルの購読を参照してください。また、Pusher (私が働いている会社) などのホストされたサービスを調べることもできます。参照: Pusher channels .

Web PubSub セキュリティ

次の考慮事項はセキュリティです。クライアントがチャネルにサブスクライブするのをどのように停止しますか。Faye docs は、問題の解決策を含む優れたセキュリティの概要を提供します。

Pusher は、ユーザー認証メカニズムプライベート チャネルを使用して、この問題に対する確実な解決策を提供します。

于 2013-01-21T12:20:47.547 に答える