如何在JavaScript和本地客户端模块之间进行通信

How to Communicate between JavaScript and Native Client modules

本文关键字:之间 模块 通信 客户端 JavaScript      更新时间:2023-10-16

我知道有一种方式消息传递系统(在JS发送一些消息和c++代码处理该消息)。除了消息系统,还有其他的方式,JS可以与本地客户端模块通信吗?

例如,在JS中单击start调用原生客户端模块的m_client->start函数。在JS中点击stop调用m_client-> Native Client模块的stop函数

不,消息传递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)