日頃よりtaQuを使用していただき誠にありがとうございます。
taQu v1.16.0では、通信が途切れたときの復帰処理を大きく見直し、ルールの実行結果が記述した順序どおりになるよう修正しました。また、iOSで効果音が鳴らなくなった場合の復帰処理、メンテナンス表示、Webhookの状態確認などを追加しています。
v1.16.0 更新内容
通信と再接続の安定化
- 表示中の画面で定期的にサーバーとの通信を確認し、応答がない場合は自動的に接続し直すようにしました
- 別のタブやアプリから戻ったとき、ネットワークが復帰したときにも、その時点で通信状態を確認します
- 一時的な通信切断では、サーバーが切断を検知してから20秒間、参加状態・得点・司会権限を保持します。時間内に再接続できれば、そのまま続けられます
- 同じユーザーが別のタブから接続した場合は、新しい接続へ安全に切り替え、古い画面には再読み込みの案内を表示します
- Redisとの接続が一時的に切れた場合も再接続を続け、復旧後に部屋の状態を同期するようにしました
- 通信が不安定な間に行った早押しや採点を、復旧後に遅れて実行しないようにしました。復旧後に改めて操作してください
再入室と通信の安全性
- 再入室時に、ユーザーIDだけでなく本人確認用のトークンも使用するようにしました
- 古い接続の退室処理によって、新しい接続まで退室扱いになることがある問題を防ぎました
- 別サイトからの不正なHTTP・WebSocketリクエストを拒否するようにしました
- プロキシ経由の接続元IPを安全に扱い、IPを偽装して試行回数の制限を回避されにくくしました
- サーバーの起動処理が完了するまでは接続を受け付けず、起動直後の入室情報が失われる問題を防ぎました
ルール実行の修正
broadcast、othersAdd()、othersSet()、tAdd()、tSet()など、他のプレイヤーへ影響する処理がコードに書かれた順序どおり反映されるようにしましたscopeをif、switch、repeat、自作関数の中で使用したとき、外側の続きや残りの繰り返しが実行されないことがある問題を修正しましたscopeの後で、keyなどのイベント引数が使えなくなる問題を修正しましたnextで他のプレイヤーに与えた得点などの変更が保存されない問題を修正しました- 一時的に退室している保存済みプレイヤーにも、
othersAdd()などによる得点変更が反映されるようにしました - ルール本体、リーチ予測、ルールテスターで処理結果が食い違いにくいよう、実行方法を共通化しました
- 終わらない再帰処理や処理数の上限超過を検出し、途中で無言のまま停止しないようにしました
iOSの効果音
- 通話やアプリ切り替えのあとに効果音が鳴らなくなった場合、画面へ戻ったときや次のタップ・キー操作で音声処理の再開を試すようにしました
- 音声の再開に失敗した場合は処理を作り直し、無応答の処理が早押しや入室を待たせないようにしました
Webhook
/webhook statusを追加し、現在の設定と直近の送信結果を確認できるようにしました/webhook secretを追加し、署名シークレットを再確認できるようにしました- Webhookが失敗したとき、HTTPエラーや5秒のタイムアウトなどの原因を記録し、司会者へ通知するようにしました
その他の変更
- 部屋名を8文字から16文字まで入力できるようにしました
- 「フレーバー」の表記を「フレーバーテキスト」に変更しました
- トップページのサーバー状態取得が長時間残らないよう、5秒で打ち切り、重複して取得しないようにしました
- Attack Survivalでは、勝ち抜け時の順位を表示しない設定を初期状態にしました
- ルームデザイン機能を今後拡張しやすい構成へ整理しました。現在利用できるテーマ切り替えは、これまでどおりA・Bです
今回の更新後、以前から開いたままの画面では新しい再接続処理が使われないため、一度ページを再読み込みしてください。
不具合や表示崩れを見つけた場合は、報告フォームから連絡をお願いします。