本当の意味でストリーミングに繋げられるクライアントはほとんどないのでは?~STREAMING_API_BASE_URLの話~
カテゴリ:Mastodon, TheDesk 投稿日:2019年7月5日こんにちはCutls Pです。
巷には様々なMastodonクライアントが存在し、機能や利便性、UI、黒魔術などで他との差別化を図っています。ストリーミングに接続できることは、Mastodonクライアントの第一条件と言ってもいいでしょう。
追記(07/05 0:30)
リダイレクトされるらしい?というわけでリダイレクトされるか確認した(Nginxのconf変えた)ら何個かのクライアントはつながりました。まだ全部確認し終わっていません。
さて、https://cutls.comでアクセスできるMastodonインスタンスのストリーミングはwss://cutls.com/api/v1/streamingって今この場で言い切れますか。
残念ですが、このインスタンスのストリーミングはwss://str.cutls.comです(注意1)。https://cutls.com/api/v1/instanceでちゃんと言っています。urls.streaming_apiを見てください。
これは、Mastodonの.env.productionで宣言できます(参照)。ここで、wss://cutls.comでアクセスできないようにNginxのconfをいじり、wss://str.cutls.comをSTREAMING_API_BASE_URLに指定し、Nginxのconfもそう書いて、様々なアプリで検証してみました。
Web UI
当然いけます。

サードパーティクライアント
以下で検証してみました。
Android
- Subway Tooter
- Tootdon
- Pawoo for Android
- Fedilab(無料のやつからアップデートしていませんが)
- Avalanche
iOS
- Amaroq
- iMast
- Tootise
- 星プテラノ
PC
- TheDesk
- Whalebird
Web
- Pinafore
- Halcyon
- Hyperspace
無事繋がったのは…
- iMast
- TheDesk
- Pinafore
- Subway Tooter(リダイレクトあり)
以上でした。
こんなの別に対応しなくていいのでは?
もっともです。当然ユーザーがストリーミングに繋げられなかったら苦情来るに決まってますので、対応されることでしょう。
しかし、0ではありません。自分はスクリプトを組んで2000インスタンスほど調べましたが、日本の結構有名なインスタンスを含め、それなりの数(50程度)のインスタンスが STREAMING_API_BASE_URLを設定しています。
TheDeskが対応している、だと…
ガバ実装でおなじみのTheDeskですが、だいぶ前にリプライで「TheDeskでストリーミングに繋がりません」って来たので、「(超有名クライアント)でも繋がらないしサーバーの設定ミスでは」と返したものの、「Webでは繋がります」って来たのでいろいろ調べて原因を追究し、実装しただけです。
クライアント作者の皆様、対応をご検討願います。
注意1: 今はどちらでもつながるようにしています。