---
title: BSMessagePort
slug: develop/es/bsmessageport
docTags: 
createdAt: 2025-03-11T07:07:17.199Z
---

Este objeto permite pasar un arreglo asociativo de JavaScript a BrightScript (o viceversa). Solo se puede crear una instancia de *BSMessagePort* por instancia de *roHtmlWidget*.

El equivalente en JavaScript es [messageport](docId\:J-X4EOXRP-0fIABapc2Ef).

## Métodos

- `PostBSMessage(en el mensaje del diccionario)` boolean&#x20;

:::hint{type="info"}
El método PostBSMessage() no acepta diccionarios anidados. Lo mismo se aplica al método BrightScript PostJSMessage().
:::

## Eventos

El siguiente evento ocurre cuando se envía un mensaje de BrightScript a JavaScript. Aparecerá como un evento *EventoMessagePort*.

- `onbsmessage`

### MessagePortEvent

Este evento contiene un solo campo:

- `datos` any readonly&#x20;

El siguiente script iterará sobre todos los campos recibidos en el evento:

```text
var bsMessage = new BSMessagePort();

bsMessage.onbsmessage = function(msg)
{
    for(name in msg.data)
    {
    	console.log('### ' + name + ': ' + msg.data[name]);
    }
}
```

En BrightScript, el método *roHtmlWidget.PostJSMessage()* se puede usar para publicar un mensaje en JavaScript:

- `widget.PostJSMessage({ Param1: "Data1", Param2: "Data2", Param3: "Data3" })`

## Ejemplos

El siguiente script enviará una colección de propiedades a BrightScript:

```text
function myFunction()
{
    var bsMessage = new BSMessagePort();
    bsMessage.PostBSMessage({complete: true, result: "PASS"});
}
```

El mensaje aparecerá en BrightScript como un *roHtmlWidgetEvent*. En este caso, GetData().reason es igual a "message" y GetData().message contiene el *roAssociativeArray*.

```text
while not finished
    ev = mp.WaitMessage(30000)
    if type(ev) <> "roHtmlWidgetEvent" then
        print type(ev)
        stop
    end if
    payload = ev.GetData()
    print payload
    print "Reason: "; payload.reason
    if payload.reason = "message" then
        print "Message: "; payload.message
        if payload.message.complete = invalid then
            stop
        else if payload.message.complete = "true" then
            finished = true
            if payload.message.result = "PASS" then
                print "Test passed"
            else
                print "Test failed: "; payload.message.err
                stop
            end if
        end if
    end if
end while
```

