on_streaming_close_foo do
# 適当に再接続を待つ戦略をここに書く
Plugin.call(:streaming_start, :get, 'wss://mstdn.kanagu.info/api/v1/streaming', {stream: 'public'}, {}, :foo)
end
みたいな
websocketに限って考えると、HTTPメソッド、URI、(GETやPOSTで渡す)パラメータ、追加ヘッダ、何らかのslugを渡してやって、開始時、メッセージ受信時、クローズ時に
Plugin.call(("streaming_message_"+slug).to_sym, data)
みたいなイベント起動が走ったり、外部からの
Plugin.call(("streaming_close_"+slug.to_sym)
に応じてクローズしたりするやつかなぁ。
誰かストリーミングプラグイン書いてくれ((((((((
これはあるし、実際twitter worldは最低限の機能しかなく、ほとんどは別プラグインやMikuTwitterに委譲しているように見受けられる。
worldプラグインに沢山機能持たせるより他プラグインで機能足していくのがmikutterっぽさありそう
Model・World間の紐付けはspellでできそうな気がするけど、filter_world_currentを上書きしても呼び出し元のModelは特定できないと思うしなぁ。
twitterのメイン垢・規制垢、mastodonのメイン垢・サブ垢がある場合に、mastodonでしゃべってる最中にふと目についたtweetをfav&RTしておきたいとか思うじゃん?
world_currentが対象Modelが生成されたworldとは異なる場合に、対象Modelと関連のあるworldのうち優先順位がもっとも高いものが使われてほしい。
そうだとすれば、返信ボタン押したときに対象Messageとworld_currentがtwitter↔️mastodonをまたぐ形になっていたらURL引用の形に変更するのもアリかもしれない。
Messageに生えてるsub_parts_quote用のAPIを上書きして、mastodon statusのURLがあったらquoteに加えるようにすれば、引用同士でsmartthreadが繋がるのではないか?