Rutas del servidor de ComfyUI (API HTTP y WebSocket)
Rutas de la API del servidor de ComfyUI: endpoints GET, POST y WebSocket integrados para prompts, cola, historial, modelos y datos de usuario, además de cómo añadir rutas personalizadas.
El servidor define una serie de métodos get y post
que puedes encontrar buscando @routes en server.py. Cuando envías un flujo de trabajo
desde el cliente web, se publica en /prompt, que valida el prompt y lo añade a una cola de ejecución,
devolviendo un prompt_id y un number (la posición en la cola), o error y node_errors si la validación falla.
La cola de prompts se define en execution.py, que también define la clase PromptExecutor.
Si quieres enviar un mensaje del cliente al servidor durante la ejecución, tendrás que añadir una ruta personalizada al servidor.
Para los casos complicados tendrás que consultar la documentación del framework aiohttp, pero la mayoría de los casos
se resuelven así:
from server import PromptServerfrom aiohttp import webroutes = PromptServer.instance.routes@routes.post('/my_new_path')async def my_function(request): the_data = await request.post() # the_data ahora contiene un diccionario con los valores enviados MyClass.handle_my_message(the_data) return web.json_response({})
A menos que sepas lo que haces, no intentes definir my_function dentro de una clase.
El decorador @routes.post hace mucho trabajo. En su lugar, define la función como se muestra arriba
y luego llama a un método de clase.
También puedes definir un @routes.get si no vas a cambiar nada.
El cliente puede usar esta nueva ruta enviando un objeto FormData con un código parecido a este,
lo que haría que the_data, en el código anterior, contenga las claves message y node_id:
import { api } from "../../scripts/api.js";function send_message(node_id, message) { const body = new FormData(); body.append('message',message); body.append('node_id', node_id); api.fetchApi("/my_new_path", { method: "POST", body, });}