Skip to content
This repository has been archived by the owner on May 7, 2024. It is now read-only.

全ての設定をサーバサイドと完全に同期するフラグ #195

Open
book000 opened this issue Oct 16, 2022 · 2 comments
Open

Comments

@book000
Copy link
Member

book000 commented Oct 16, 2022

No description provided.

@book000
Copy link
Member Author

book000 commented Oct 17, 2022

WebSocket /sync エンドポイント

settings.globalSync で判定。この値はサーバ側と共有しないこと

フロー

最初の同期時

globalSync 有効直後、サーバサイドに設定が一切ない場合(action=getのvalueがnull)はaction=putでクライアントの設定を強制同期する。

クライアント起動時

  1. クライアントが settings.globalSync フラグを持っている (=true) なら本機能を稼働。そうでないならreturn
  2. クライアントからエンドポイントにWebSocketで接続。最新要求リクエストを送信(action=get
  3. サーバからサーバで保持しているデータをすべて返す(action=get, value=[{...}]

onConnected で2を動かさせる(reconnect時にも動作)

自クライアントが設定を変更した時

  1. ユーザーが設定を変更。uploadSettings(type) とかなんとかを呼び出す
  2. 設定変更後の値をサーバに投げる(action=patch, key=KEY, value=XXXXX
  3. サーバサイドに設定変更後の値を保存
  4. サーバサイドから接続している全クライアントに設定変更通知を流す(action=patch, key=KEY, value=XXXXX

他クライアントが設定を変更した時

  1. サーバから action=update のメッセージを受けとる
  2. クライアントの設定変更を実施

JSON

WebSocketで通信する双方のメッセージ

action (required)

何をするか

  • とりうる値: get put patch

actionはクライアントから送られてきた値をそのまま利用する。
action=getの場合、サーバサイドで保存している設定を返す。
action=putの場合、サーバサイドの保存設定を完全に置き換える。
action=patchの場合、サーバサイドの保存設定を更新する。

key (optional)

更新するアイテムの種別(キー)

  • とりうる値:

どの値が変更されたかを判別するために利用。action=patchの場合のみrequired

value (optional)

更新するアイテムの値(バリュー)、またはサーバサイドに保存されている設定の配列

action=putの場合、すべての設定の配列が入る。
action=patchの場合、更新後の値が入る。
action=getの場合、サーバサイドの設定が入る。

action=putとaction=patchの場合はrequired、action=getで、サーバからクライアントに送信する場合のみrequired

サーバサイドでの設定保存

環境変数 GLOBAL_SETTING_FILE に保存。デフォ値は /data/global-settings.json
VIEWED_FILE は撤廃

@book000
Copy link
Member Author

book000 commented Oct 17, 2022

@book000 book000 added this to the v2.x milestone Oct 23, 2022
@book000 book000 removed this from the 2.x milestone Dec 7, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant