javascript - 如何在 PPAPI 中将变量从 JavaScript 传递到 C++?

标签 javascript c++ variables google-nativeclient ppapi

我正在查看某人的代码(不可联系),他们已经设置了一个与服务器通信并运行一些 C++ 代码的 websocket 客户端。这是针对新的 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: ...
    }
  }
}

看看 documentation在这里了解更多信息。您可以发送 ArrayBuffers,甚至是任意对象。

关于javascript - 如何在 PPAPI 中将变量从 JavaScript 传递到 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678729/

相关文章:

javascript - 如何阻止 Safari 在我的 <input type ="search"> 字段中放置放大镜图像?

c++ - 为什么迭代器没有被取消引用为左值

javascript - 单击按钮时填充 javascript 变量

javascript - Html().replace() : RegExp : $1 and single quote

javascript - 如何在mean.io应用程序中进行调试?

c++ - Qt:信号/槽设计和性能

php - 使用 php 发送变量的最安全方式

c - 如何在C中传递N个不同类型的参数

javascript - 当它到达浏览器的顶部时,位置固定了我的表格的第一行

c++ - 这个程序的名称是什么?