チャットアプリを開発しています。
Webブラウザ版(for PC)とAndroid, iOSはアプリがあります。
それで、該当のチャットルームを開いている(厳密にはエンドユーザーが見ている)場合には通知を送らないようにしています。ただ、その判断が結構複雑で
① チャットルームを開いていない
② アプリがrunningな状態(アプリのみ)
③ ブラウザではタブがactiveな状態
といった制御を入れており、
・画面を開いた
・タブから離れた
・アプリがstop(resume)した
などのタイミングでサーバーにチャットルームを開いているか?のフラグを送信、新規投稿イベント時にフラグを見て通知(push通知、desktop通知)を送信するかどうかを判断しています。
ただ、このフラグの上げ下げが複雑なゆえにバグが結構発生していてなやまされています。
もし、この部分を以前開発したことがあって、ベストプラクティスをご存知の方がいたら教えていただけないでしょうか?
ちなみにWebSocketは通っています。
理想をいえば、フラグを使わずに、通知発行時にwebsocketを通してユーザーがチャットルームを開いているか?を取得したほうが処理はシンプルなのでしょうが、パフォーマンス諸々どうなのだろうかと疑問に思っています。