我知道有一种方式消息系统(在JS中发送一些Message和c ++代码来处理该消息)。除了消息传递系统,JS还可以通过其他方式与Native Client模块进行通信吗?
例如,在JS调用中单击start m_client->启动Native Client模块的启动功能。点击JS中的停止调用m_client->停止Native Client模块的功能。
答案 0 :(得分:1)
不,消息传递API(即PostMessage)是JavaScript和NaCl模块可以直接通信的唯一直接方式。
您可以实施类似于您所描述的内容:
// JavaScript
startButtonEl.addEventListener('click', function(e) {
naclModuleEl.postMessage('start');
}, false);
当然,这将异步向NaCl发送消息。开发中有一个新的API允许与NaCl模块进行同步通信:
// JavaScript
startButtonEl.addEventListener('click', function(e) {
var response = naclModuleEl.postMessageAndAwaitResponse('start');
// do something with the response
}, false);
但Chrome目前无法在Chrome Stable中使用(最近登陆Chrome浏览器,请参阅此处的错误:https://code.google.com/p/chromium/issues/detail?id=367896)