Skip to content

通道-Channel

描述


原生程序IPC通讯通道。ExpOS支持原生程序(Linux下C/C++/GO语言编写的程序)与JavaScript编写的APP进行进程间通讯,该控件负责APP与原生程序间的消息发送和接收. 父对象为页面,无子对象。

事件


onMessage:接收到原生程序消息时触发,事件函数定义: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