diff --git a/nodes.py b/nodes.py index 6489f8653..d5e14e2dc 100644 --- a/nodes.py +++ b/nodes.py @@ -749,6 +749,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 94195a079..18d273a4b 100644 --- a/server.py +++ b/server.py @@ -31,6 +31,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 1645272fb..53cd6af3d 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);