簡體   English   中英

如何在PPAPI中將變量從JavaScript傳遞到C ++?

[英]How do you pass a variable from JavaScript to C++ in 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的所有異步消息都在pp :: Instance中定義的HandleMessage函數中處理:

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: ...
    }
  }
}

請查看此處的文檔以獲取更多信息。 您可以發送ArrayBuffers,甚至可以發送任意對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM