シーク可能なリーダーをサポートする循環バッファーの実装が必要です。私のユースケース:
私のコードでは、ログ メッセージを収集します。最終的に、ユーザーは適切にフォーマットされたページにアクセスする可能性があります。メッセージで RAM がいっぱいにならないようにするには、固定サイズの FIFO 構造が必要です。ユーザーが長時間ページにアクセスしないと、メッセージがドロップされます。それで大丈夫です。
ユーザーがページにとどまっている限り、新しいログ メッセージがページに追加されます。JavaScript を介して、ユーザーは保持するメッセージの数を定義できます。これは、アプリのバッファ サイズとは完全に無関係です。したがって、新しい要素を反復処理するために使用できるデータ構造のリーダーが必要です。
ユーザーがページを再読み込みするか、初めて読み込む場合は、リーダーを FIFO 内の最も古い要素に設定する必要があります。
メッセージが追加されると、リーダーを更新する必要があります。ブラウザーが新しいメッセージを十分な速さで取得できない場合、リーダーは最終的に FIFO 内の最も古いメッセージを指す必要があります。つまり、ユーザーはいくつかのメッセージを見逃す可能性があります。これは完璧ではありませんが、まれなケースです。読者が「メッセージを 5 つ逃した」と言ってくれれば完璧ですが、それがなくても生きていけます。
これを提供する既存の実装を知っていますか?