API de JavaScript
La API de BrightSign para JavaScript le permite interactuar con el firmware del reproductor BrightSign para configurar el reproductor, recuperar datos del sistema e interactuar con dispositivos periféricos. Esta API permite operar una plataforma de señalización digital, incluida la reproducción, programación, diagnósticos y configuración de red, utilizando HTML/JavaScript, sin la necesidad de una programación extensa en BrightScript.
Las APIs de JavaScript reemplazan los anteriores “objetos BrightScript-JavaScript”
Esta API reemplaza los objetos BrightScript-JavaScriptBrightScript-JavaScript objects. Esos objetos JavaScript más antiguos aún se ofrecen por motivos de compatibilidad retroactiva. Consulte la Guía de migración de BrightScript-JavaScriptBrightScript-JavaScript Migration Guide para ver la asignación entre las APIs de BrightScript y JavaScript.
Los objetos JavaScript están integrados en el entorno de ejecución del navegador. Solo existen en el espacio de nombres global de JavaScript y solo pueden utilizarse con roHtmlWidget.
Por lo tanto, la API de JavaScript utiliza módulos de Node. Funciona perfectamente con roHtmlWidgetroHtmlWidget y roNodeJsroNodeJs. Es un superconjunto de los objetos JavaScript heredados.
BrightSign no ha agregado nuevas funciones a los objetos heredados BrightScript-JavaScript durante varios años, y todos nuestros esfuerzos actuales de desarrollo se destinan a las APIs de JavaScript. Los objetos heredados BrightScript-Javascript existen para admitir a los clientes que los utilizan en software implementado y para mantener ese soporte durante las actualizaciones del SO.
A diferencia de los objetos heredados BrightScript-JavaScript, no existe una relación uno a uno entre los objetos BrightScript y los objetos de la nueva API de JavaScript. Muchas funciones de BrightScript (por ejemplo, capacidades de servidor HTTP y almacenamiento de archivos) no se exponen en la nueva API porque JavaScript y Node.js® exponen equivalentes estandarizados y populares.
Habilitación de la API de JavaScript
La API de BrightSign para JavaScript se implementa con el módulo Node.js, que se incluye con el motor Chromium en el reproductor. Para utilizar la API de BrightSign con una instancia de roHtmlWidget debe habilitar Node.js al crear el widget:
Ejemplo
r=createobject("rorectangle",0,0,1920,1080)
aa=createobject("roassociativearray")
aa.url="http://test-server/index.html"
aa.nodejs_enabled=true
bb=createobject("roassociativearray")
bb.port=3000
aa.inspector_server=bb
h=createobject("rohtmlwidget",r,aa)
h.show()En el ejemplo anterior, Node.js se habilita incluyendo la entrada nodejs_enabled:true en el arreglo asociativo que se pasa durante la creación de la instancia de roHtmlWidget.
Carga de módulos BrightSign
La API de BrightSign no existe en el espacio de nombres global (window) del entorno de ejecución de JavaScript. En su lugar, al igual que los objetos Node.js, los módulos BrightSign se cargan mediante la función require() (es decir, require("@brightsign/<module_name>")). Los módulos BrightSign en realidad forman parte del firmware, pero en términos de uso son idénticos a otros módulos Node.js.
Ejemplo
var NetworkConfigClass = require("@brightsign/networkconfiguration"); // Call the class constructor for the networkconfiguration object.
var wifi = new NetworkConfigClass("ethernet"); // Create an instance of the networkconfiguration class.Métodos síncronos y asíncronos
Los módulos BrightSign contienen métodos síncronos y asíncronos. Los métodos síncronos devuelven un objeto que puede utilizarse inmediatamente, mientras que los métodos asíncronos devuelven un objeto Promise, que a su vez devolverá los datos del objeto cuando se resuelva la operación. Los scripts deben manejar estas devoluciones retrasadas (normalmente utilizando los métodos .then() y .catch() disponibles en el objeto Promise).
Ejemplo
var NetworkConfigClass = require("@brightsign/networkconfiguration");
var wifi = new NetworkConfigClass("wlan0");
wifi.scan().then( // Call the Scan() method, which returns a promise.
function(data){console.log(JSON.stringify(data));}) // The resolve/success case, which prints the scan results
.catch(
function(data){console.log(JSON.stringify(data));}) // The reject/failure case, which prints the failure reason