0

ActionCable を使用してチャット機能を実装しました。私は現在、README でのユーザーの外観の実装に基づいて、プレゼンス ステータスを実装しようとしています。

このドキュメントでは、次のステートメントについて言及しています。

#subscribed コールバックは、以下に示すように、クライアント側のサブスクリプションが開始されたときに呼び出されます。この場合、その機会を利用して、「現在のユーザーが実際に表示されました」と言います。その表示/非表示 API は、Redis やデータベースなどによってサポートされる可能性があります。

データベースにオンライン属性を実装し、アプリケーションが表示/非表示の通知を受信したときにそれを更新できます。ただし、この属性の信頼性については保証しません。たとえば、サーバーに障害が発生した場合、同期が取れなくなる可能性があります。

どうすればこれを信頼できる方法で実装できますか?

4

1 に答える 1

2

一定時間で期限切れになる Redis 構造に配置します (TTL を使用)。無限の時間 (DB など) どこかに保存すると、同期が取れなくなる可能性があります。アプリケーションの起動時にすべてのユーザー プレゼンスを false に設定できると主張するかもしれませんが、それは複数のサーバーまたはワーカーを実行するまでしか機能しません。ユーザーが接続している間: このユーザーのプレゼンス値を数分ごとに Redis に挿入します。また、接続クローズ イベントを処理して、数分よりも高い精度で Redis からユーザー プレゼンスを削除します。

于 2015-10-10T12:26:27.493 に答える