Skip to main content

Mensajes

Durante la ejecución (o cuando cambia el estado de la cola), el PromptExecutor 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:
Si 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), el PromptExecutor 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 mensaje executed 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.
En el servidor, el código es igual de sencillo:

Obtener node_id

La mayoría de los mensajes integrados incluyen el ID del nodo actual en el valor de node. 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: