通道-channel
描述
原生程序IPC通讯通道。ExpOS支持原生程序(Linux下C/C++/GO语言编写的程序)与JavaScript编写的APP进行进程间通讯,该控件负责APP与原生程序间的消息发送和接收.
父对象为页面,无子对象。
事件
message: 接收到原生程序消息时触发,事件函数定义:onMessage(sender, msg, payload, responseId),其中sender是发送该消息的原生程序名称字符串,msg为消息内容字符串,payload为消息负载字符串,responseId表示回应ID,如果该值大于0,需要接收程序调用respond()回应,否则不需要
属性
名称 |
功能说明 |
脚本例子 |
---|---|---|
name |
通道名称 |
ui.form-name.channel-name.name=’test’ 设定通道名称为test |
interestedPublisher |
订阅通道名称 ( 订阅多个通道,中间可用逗号分隔) |
ui.form-name.channel-name.interestedPublisher=”xxx,yyy” 订阅xxx和yyy原生程序发布的消息,如原生程序调用publish()发送消息, 本控件的onMessage事件会触发 |
方法
名称 |
功能说明 |
脚本例子 |
---|---|---|
postMessage(receiver, msg, payload) |
向原生程序发送消息,receiver为原生程序通道名称,msg为消息内容,payload为负载字符串。该操作为异步发送,即函数立即返回,无论接收者是否收到 |
ui.form-name.channel-name.postMessage(‘xxx’, ‘This is a test’, ‘abc’) 向名称为xxx的原生程序进程发送消息字符串’This is a test’,负载字符串abc |
subscribe(publisher) |
订阅通道,publisher为感兴趣的发布者名称 |
ui.form-name.channel-name.subscribe(“xxx”) 订阅xxx原生程序发布的消息,如该原生程序调用publish()发送消息, 本控件的onMessage事件会触发 |
unsubscribe(publisher) |
取消订阅通道,publisher为感兴趣的发布者名称 |
ui.form-name.channel-name.unsubscribe(“xxx”) 取消订阅xxx原生程序发布的消息 |
publish(msg, payload) |
发布消息,订阅的原生进程会收到该消息 |
ui.form-name.channel-name.publish(“This is a test”, ‘abc’) 发布的消息字符串’This is a test’,负载字符串为abc |
respond(sender, responseId, ret, reply) |
回应同步消息发送者,sender为发送者通道名称,responseId是onMessage()中的responseId参数,ret为回应的返回整数值(取决于发送者如何处理,建议0或者其他值,0表示成功,其他值表示失败),reply表示需回应的字符串。在onMessage()处理函数中,如果responseId参数>0时(表示发送者同步发送消息给接收者)调用该函数,返回结果给发送者。 |
ui.form-name.channel-name.respond(‘xxx’, responseId,0, “okay”) 回应同步消息发送者xxx,返回结果值为0,结果字符串为okay |