diff --git a/nodes.py b/nodes.py index a981abb8e..f24bc4a5e 100644 --- a/nodes.py +++ b/nodes.py @@ -747,6 +747,13 @@ class SaveImage: digits = 0 return (digits, prefix) + def compute_vars(input): + input = input.replace("%width%", str(images[0].shape[1])) + input = input.replace("%height%", str(images[0].shape[0])) + return input + + filename_prefix = compute_vars(filename_prefix) + subfolder = os.path.dirname(os.path.normpath(filename_prefix)) filename = os.path.basename(os.path.normpath(filename_prefix)) diff --git a/server.py b/server.py index e4f688cf7..e71289cdf 100644 --- a/server.py +++ b/server.py @@ -29,6 +29,8 @@ async def cache_control(request: web.Request, handler): class PromptServer(): def __init__(self, loop): + PromptServer.instance = self + mimetypes.init(); mimetypes.types_map['.js'] = 'application/javascript; charset=utf-8' self.prompt_queue = None diff --git a/web/scripts/api.js b/web/scripts/api.js index b90b1c656..2b90c2abc 100644 --- a/web/scripts/api.js +++ b/web/scripts/api.js @@ -1,8 +1,15 @@ class ComfyApi extends EventTarget { + #registered = new Set(); + constructor() { super(); } + addEventListener(type, callback, options) { + super.addEventListener(type, callback, options); + this.#registered.add(type); + } + /** * Poll status for colab and other things that don't support websockets. */ @@ -82,7 +89,11 @@ class ComfyApi extends EventTarget { this.dispatchEvent(new CustomEvent("executed", { detail: msg.data })); break; default: - throw new Error("Unknown message type"); + if (this.#registered.has(msg.type)) { + this.dispatchEvent(new CustomEvent(msg.type, { detail: msg.data })); + } else { + throw new Error("Unknown message type"); + } } } catch (error) { console.warn("Unhandled message:", event.data);