Как передать переменную из JavaScript в C ++ в PPAPI?

Я смотрю на чей-то код (не контактный), и они настроили клиента websocket, который общается с сервером и запускает некоторый код C ++. Это для нового Chrome PPAPI. Я могу передать переменные от клиента к серверу, но я не уверен, как передать их на сторону C ++, чтобы изменить то, что происходит в коде?

Поэтому, если клиент передает 1, код C ++ делает одно, а если 2 — другое. Я просто не вижу, как это происходит.

JavaScript, который запускает код C ++:

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;
}

Я посмотрел на несколько примеров безрезультатно.

0

Решение

Все асинхронные сообщения из 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: ...
}
}
}

Посмотрите на документация здесь для получения дополнительной информации. Вы можете отправлять ArrayBuffers и даже произвольные объекты.

3

Другие решения


По вопросам рекламы [email protected]