メッセージ
実行中(またはキューの状態が変化した際)、PromptExecutor は PromptServer の send_sync メソッドを通じてクライアントへメッセージを送信します。
これらのメッセージは api.js 内で定義されたソケットイベントリスナーによって受信されます(本文執筆時点では約 90 行目付近、または this.socket.addEventListener を検索してください)。
このリスナーは、既知のメッセージタイプごとに CustomEvent オブジェクトを作成し、登録されたすべてのリスナーへ dispatch(発行)します。
拡張機能は、標準的な Javascript の慣習に従ってイベントを受信するように登録できます(通常は setup() 関数内で行います)。
message_type が内置のものではない場合、既知のメッセージタイプリストに自動的に追加されます。messageHandler は CustomEvent オブジェクトと共に呼び出されます。このオブジェクトはソケットによって発生したイベントを拡張し、サーバーから送信されたデータの辞書である .detail プロパティを追加したものです。したがって、使用法は一般的に以下のようになります。
内置メッセージタイプ
実行中(またはキューの状態が変化した際)、PromptExecutor は PromptServer の send_sync メソッドを通じて以下のメッセージをクライアントへ送信します。拡張機能はこれらのいずれかのリスナーとして登録できます。
executed の使用について
名前にもかかわらず、executed メッセージはノードの実行が完了するたびに送信されるわけではありません(executing とは異なります)。ノードが UI の更新を返す場合にのみ送信されます。
これを行うには、メイン関数はタプルではなく辞書を返す必要があります。
a_new_dictionary は executed メッセージ内の output の値として送信されます。
ノードに出力がない場合、result キーは省略できます(例:nodes.py 内の SaveImage のコードを参照)。
カスタムメッセージタイプ
上記の通り、クライアント側では独自のメッセージタイプ名に対してリスナーとして登録するだけで、カスタムメッセージタイプを追加できます。node_id の取得
内置メッセージのほとんどは、node の値に現在のノード ID を含みます。同様のことを行いたい場合もあるでしょう。
ノード ID はサーバー側で隠し入力を通じて利用可能です。これは INPUT_TYPES 辞書の hidden キーを使用して取得します。