messageport
7 min
el objeto javascript messageport permite pasar un objeto javascript como un arreglo asociativo de javascript a brightscript este canal de comunicación funciona ya sea que el script se esté ejecutando dentro de un widget html creado por brightscript, un widget html creado desde javascript o una instancia de node js® esta es la forma preferida para que el contenido javascript se comunique con su aplicación principal tenga en cuenta que la marca brightsign js objects enabled debe establecerse en verdadero en la configuración de rohtmlwidget docid\ g tjkqqhlcft4fw5 z6t0 idl de messageport interface bsmessage { attribute string type; }; callback messageportcallback = void (bsmessage event); interface messageport { void postbsmessage(object message); void addeventlistener(string type, messageportcallback callback); void removeeventlistener(string type, messageportcallback callback); }; creación de objetos para crear un objeto messageport primero cargue el módulo @brightsign/messageport usando el método require() var bsmessage = new message port(); messageport postbsmessage () postbsmessage(object message) los objetos pasados a postbsmessage() se recibirán como eventos en la aplicación principal para widgets html creados desde brightscript, el rohtmlwidget principal generará un rohtmlwidgetevent con la razón establecida en "message" para widgets html creados desde javascript, el @brightsign/htmlwidget principal generará un evento "message" para aplicaciones node, el objeto principal ronodejs generará un ronodejsevent docid\ f cwpgnxnbi4km6c2fwju con la razón establecida en "message" ejemplos el siguiente script enviará una colección de propiedades a brightscript function myfunction() { var bsmessage = new require("@brightsign/messageport"); bsmessage postbsmessage({complete true, result "pass"}); } el mensaje aparecerá en brightscript como un ronodejsevent en este caso, getdata() reason es igual a "message" y getdata() message contiene el roassociativearray 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 el siguiente script mostrará el contenido del evento var message port class = require("@brightsign/messageport"); var bsmessage = new message port class(); bsmessage addeventlistener('bsmessage', function(msg) { console log(json stringify(msg)); }) en brightscript, el método ronodejs postjsmessage() puede utilizarse para publicar un mensaje en javascript nodejs postjsmessage({ param1 "data1", param2 "data2", param3 "data3" }) la interfaz messageport es la forma preferida para que el contenido javascript se comunique con su aplicación principal messageport es un bus compartido, por lo que si lo habilita en su aplicación, también puede recibir mensajes del brightsign os en esa aplicación para enviar/recibir mensajes en aplicaciones node js de brightauthor\ connected, consulte este ejemplo https //github com/brightsign/dev cookbook/blob/c34eea462428dde39cc3d6fcb80bbfb6ff73876c/examples/send plugin message/pluginmessageapp html#l14 en nuestro repositorio de github