Skip to content

Use WebSocket to achieve granular control of volume transfer#261

Merged
smikitky merged 92 commits into
masterfrom
feature-websocket
Oct 16, 2022
Merged

Use WebSocket to achieve granular control of volume transfer#261
smikitky merged 92 commits into
masterfrom
feature-websocket

Conversation

@genkn
Copy link
Copy Markdown
Collaborator

@genkn genkn commented Apr 18, 2022

No description provided.

@genkn genkn force-pushed the feature-websocket branch from 852a256 to 164a454 Compare May 10, 2022 04:54
@smikitky smikitky changed the title Use a websocket connection to transfer each image of volume data. Use WebSocket to achieve granular control of volume transfer May 12, 2022
@genkn genkn force-pushed the feature-websocket branch from f60d039 to ea5dcfc Compare June 1, 2022 07:43
@genkn genkn force-pushed the feature-websocket branch from c081038 to af042d8 Compare June 1, 2022 10:10
Comment thread packages/circus-rs/src/browser/viewer/Viewer.ts Outdated
@genkn genkn force-pushed the feature-websocket branch from b353b96 to ab2110f Compare August 31, 2022 17:34
@genkn genkn force-pushed the feature-websocket branch from ab2110f to 6b6c89d Compare August 31, 2022 17:51
@genkn genkn marked this pull request as ready for review August 31, 2022 18:00
@genkn
Copy link
Copy Markdown
Collaborator Author

genkn commented Aug 31, 2022

遅くなって申し訳ありません。
テストの fix に苦労しました。

(1) prettier

既存コードもかかっていないところがあります。
比較がより困難になることを防ぐために、こちらではかけていません。
マージ後にそちらで全コード一括、master でお願いできないでしょうか。

(2) ws volume 通信の認可(seriesUid に対する認可)について
- packages/circus-api/src/createApp.ts
- packages/circus-rs/src/server/createServer.ts

現在の定義では authFunctionProvider: req => async seriesUid => true となっているため、
websocket 接続後は、その接続を使用すると認可なく全ての volume にアクセスできてしまいます。

// [createAuthFunctionProvider.ts]
type AuthFunction = (seriesUid: string) => Promise<boolean>;
type AuthFunctionProvider = (req: IncomingMessage /*初回のws接続時の要求*/ ) => AuthFunction;
const createAuthFunctionProvider: FunctionService<AuthFunctionProvider, ...> = ...
export default createAuthFunctionProvider;

のように定義をして、

createWebsocketVolumeConnectionHandlerCreator の依存を調整する方法が良いと思うのですが、
AuthFunctionProvider の認可まわりの実装は、皆目見当がつきません。

こちらの実装はお願いできないでしょうか。

また、認可周りの問題として、
Aさんでログイン⇒ ws接続*1 ⇒ Bさんでログイン
としたときに、*1の接続が残っていた場合、Bさんでログインしているにも関わらず、認可関数はAさんの認証のものが使用されてしまうはずです。
ログアウトに伴うページの離脱が発生しない場合、これは大きな問題になりそうです。
ログアウト時に、全ての接続を切るような対応が必要かもしれません。

@genkn
Copy link
Copy Markdown
Collaborator Author

genkn commented Sep 12, 2022

先ほどはお打ち合わせありがとうございました。
いくつか、打合せの内容から変更して push しました。

  1. websocket の切断について

    • LoginScreen ではなく VolumeLoaderFactoryProvider (packages/circus-web-ui/src/index.tsx) に実装しました。
    • (LoginScreen に変更はありません)
  2. setToken をやめてコンストラクタの引数にしました。

よろしくお願いいたします。

@smikitky smikitky merged commit 1af807b into master Oct 16, 2022
@smikitky smikitky deleted the feature-websocket branch October 16, 2022 08:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants