shibafu528 / Yukari

Mastodon Client for Android
Apache License 2.0
61 stars 2 forks source link

ストリーミング再接続ボタンを押した時、何もメッセージが表示されない #321

Open shibafu528 opened 2 years ago

shibafu528 commented 2 years ago

昔のバージョンでは「ストリーミング通信状態通知」が有効になっていれば、切断/接続メッセージが表示されたので状況を確認できていた気がする。いつのまにか何も表示されなくなっている。

Yukari 3.1.3.2345 / Pixel 5a / Android 12

shibafu528 commented 2 years ago

MastodonのほうはTwitter4Jとストリーミングのライフサイクル処理が全く異なるため、別の理由で動いてなさそう。

たぶん例外が出た時は出るけど、StreamChannel#stopで止めた時には出ない感じになっている? Twitterの場合はこれでも出る。

shibafu528 commented 1 year ago

mastodon-wsの場合はまたちょっと違う。

MuxStreamClientを使っている場合、通知は表示されない。一方、LegacyStreamClientを使っている場合、通知が表示される。

これは、mastodon-wsのStreamListenerで扱うライフサイクルイベントがコネクション単位となっていることが理由と思われる。

Muxの場合、再接続ボタンを押すと購読を1つずつ解除していくことになるので、コネクションが切断される頃には全ての購読が解除されていて、コールバックが呼ばれることがない。

Legacyの場合、購読と1:1関係にあるコネクションを1つずつ切断していくことになるので、きちんとコールバックを受け取れる。


不慮の切断時にはMuxであっても正しく通知を受け取れるので、そんなに神経質になることはないと思う。それでもメッセージが必要というのであれば、コネクション単位ではなく購読単位でライフサイクルコールバックを考える必要がある。