---
title: roNodeJsEvent
slug: develop/es/ronodejsevent
docTags: 
createdAt: 2025-03-11T07:07:18.733Z
---

Si se adjunta un *roMessagePort* a un *roNodeJs*, recibirá objetos *roNodeJsEvent* cuando ocurra algo en la instancia principal de *roNodeJs*.

## ifUserData

`SetUserData(user_data As Object)`
Establece los datos de usuario que se devolverán cuando se generen eventos.

`GetUserData() As Object`
Devuelve los datos de usuario que se configuraron previamente mediante `SetUserData()`. Devolverá `Inválido` si no se ha establecido ningún dato.

## ifNodeJsEvent

`GetData() As roAssociativeArray`
Devuelve los datos del evento como un arreglo asociativo con los siguientes pares clave/valor:

- `razón` <font color="#6B21A8">string</font>: La causa del evento, que puede ser una de las siguientes:
  - `salida_del_proceso`: La instancia de nodeJs se ha cerrado.
  - `mensaje`: La instancia de nodeJs ha enviado un mensaje\*.\*
- `exit_code` <font color="#6B21A8">number</font>: Este campo solo está presente si el valor del campo `razón` es `salida_del_proceso`. Devolverá el código de salida del proceso Node.js®, como se describe en [https://nodejs.org/api/process.html#process\_exit\_codes](https://nodejs.org/api/process.html#process_exit_codes). El campo `exit_code` solo está definido a partir de OS 8.2. Tenga en cuenta que el script de Node.js también podría utilizar estos códigos para sus propios fines.&#x20;
- `mensaje` <font color="#6B21A8">string</font>: Si el valor del campo `razón` es `mensaje`, este campo devuelve el contenido del mensaje.

## Ejemplo

El siguiente bucle de eventos espera un evento de nodeJs e informa los eventos:

```text
while true
    ev = wait(0, gaa.mp)
    print "=== BS: Received event ";type(ev)
    if type(ev) = "roNodeJsEvent" then
        eventData = ev.GetData()
        if type(eventData) = "roAssociativeArray" and type(eventData.reason) = "roString" then
            if eventData.reason = "process_exit" then
                print "=== BS: Node.js instance exited with code " ; eventData.exit_code
            else if eventData.reason = "message" then
                print "=== BS: Received message "; eventData.message
                ' To use this: msgPort.PostBSMessage({text: "my message"});
            else
                print "======= UNHANDLED NODEJS EVENT ========="
                print eventData.reason
            endif
        else
            print "=== BS: Unknown eventData: "; type(eventData)
        endif
    endif
endwhile
```

