To create a messageport object first load the @brightsign/messageport module using the require() method.
var MESSAGE_PORT = require("@brightsign/messageport"); var bsMessage = new MESSAGE_PORT(); |
PostBsMessage(Object message) |
Objects passed to PostBSMessage() will be received as events in the parent application:
for HTML widgets created from BrightScript, the parent roHtmlWidget will generate a roHtmlWidgetEvent with reason set to "message"
for HTML widgets created from JavaScript, the parent @brightsign/htmlwidget will generate a "message" event
for Node applications, the parent roNodeJs object will generate a roNodeJsEvent with reason set to "message"
The following script will send a collection of properties to BrightScript:
function myFunction() { var bsMessage = new require("@brightsign/messageport"); bsMessage.PostBSMessage({complete: true, result: "PASS"}); } |
The message will appear in BrightScript as an roNodeJsEvent. In this case, the GetData().reason equals "message" and GetData().message contains the 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 |
The following script will display the contents of the event:
var MESSAGE_PORT = require("@brightsign/messageport"); var bsMessage = new MESSAGE_PORT(); bsMessage.addEventListener('bsmessage', function(msg) { console.log(JSON.stringify(msg)); }) |
In BrightScript, the roNodeJs.PostJSMessage() method can be used to post a message to JavaScript:
nodejs.PostJSMessage({ Param1: "Data1", Param2: "Data2", Param3: "Data3" }) |