【问题标题】:How to Communicate between JavaScript and Native Client modules如何在 JavaScript 和 Native Client 模块之间进行通信
【发布时间】:2014-07-16 09:34:19
【问题描述】:
我知道消息系统有一种方法(即 JS 发送一些消息,而 c++ 代码处理该消息)。除了消息系统之外,还有其他方式可以让 JS 与 Native Client 模块进行通信吗?
比如说在JS调用m_client->Native Client模块的start函数中点击start。 JS中点击stop调用m_client->Native Client模块的stop函数。
【问题讨论】:
标签:
javascript
c++
google-nativeclient
【解决方案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,请在此处查看错误:https://code.google.com/p/chromium/issues/detail?id=367896)