Mensajes
Durante la ejecución (o cuando cambia el estado de la cola), elPromptExecutor envía mensajes de vuelta al cliente
mediante el método send_sync de PromptServer.
Estos mensajes los recibe un listener de eventos de socket definido en api.js (al momento de escribir esto, alrededor de la línea 90, o busca this.socket.addEventListener),
que crea un objeto CustomEvent para cada tipo de mensaje conocido y lo despacha a los listeners registrados.
Una extensión puede registrarse para recibir eventos (normalmente en la función setup()) siguiendo el idioma estándar de JavaScript:
message_type no es uno de los integrados, se añadirá automáticamente a la lista de tipos de mensaje conocidos. Se llamará a
messageHandler con un objeto CustomEvent, que extiende el evento emitido por el socket para añadir una propiedad .detail, un diccionario con
los datos enviados por el servidor. Así que el uso general es algo como:
Tipos de mensaje integrados
Durante la ejecución (o cuando cambia el estado de la cola), elPromptExecutor envía los siguientes mensajes de vuelta al cliente
mediante el método send_sync de PromptServer. Una extensión puede registrarse como listener de cualquiera de ellos.
Usar executed
A pesar del nombre, un mensajeexecuted no se envía cada vez que un nodo termina su ejecución (a diferencia de executing), sino solo cuando el nodo
devuelve una actualización de UI.
Para hacerlo, la función principal debe devolver un diccionario en lugar de una tupla:
a_new_dictionary se enviará entonces como valor de output en un mensaje executed.
La clave result se puede omitir si el nodo no tiene salidas (mira, por ejemplo, el código de SaveImage en nodes.py)
Tipos de mensaje personalizados
Como se indicó antes, en el lado del cliente puedes añadir un tipo de mensaje personalizado simplemente registrándote como listener de un nombre de tipo de mensaje único.Obtener node_id
La mayoría de los mensajes integrados incluyen el ID del nodo actual en el valor denode. Es probable que quieras hacer lo mismo.
El node_id está disponible en el servidor mediante una entrada oculta, que se obtiene con la clave hidden del diccionario INPUT_TYPES: