如何在PPAPI中将变量从JavaScript传递到c++

How do you pass a variable from JavaScript to C++ in PPAPI?

本文关键字:JavaScript c++ 变量 PPAPI      更新时间:2023-10-16

我正在看某人的代码(不可接触),他们已经建立了一个websocket客户端,与服务器对话并运行一些c++代码。这是为新的Chrome PPAPI。我可以从客户端传递变量到服务器,但我不确定如何将它们传递到c++端,以改变代码中发生的事情?

因此,如果客户端传递1,c++代码做一件事,如果传递2,它做另一件事。我只是看不出它是怎么做到的。

似乎启动c++代码运行的JavaScript是:

function onStartTest(e)
{
    console.log('Start Test');
    var hostname = document.getElementById('hostname').value;
    var message = 'start:'+hostname;
    common.logMessage(message);
    common.naclModule.postMessage(message);
    e.preventDefault();
    return false;
}

我已经看了几个例子,但没有用。

所有来自JavaScript的异步消息都在HandleMessage函数中处理,该函数在pp::Instance:

中定义。
class MyInstance : public pp::Instance {
  ...
  virtual void HandleMessage(const pp::Var& message) {
    ...
  }
};

在您的示例中,您正在发送一个字符串值。要提取它,可以使用pp::Var::AsString方法:

virtual void HandleMessage(const pp::Var& message) {
  if (message.is_string()) {
    std::string str_message = message.AsString();
    ...
  }
}

如果你只是想传递数字,你也可以这样做:

virtual void HandleMessage(const pp::Var& message) {
  if (message.is_int()) {
    int32_t int_message = message.AsInt();
    switch (int_message) {
      case 1: ...
      case 2: ...
    }
  }
}

查看这里的文档以获取更多信息。你可以发送arraybuffer,甚至任意对象