2015-07-28 2 views
0

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

Итак, если клиент передает код 1, код C++ делает одно, а если он делает другое. Я просто не понимаю, как это делается.

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

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

ответ

3

Все асинхронные сообщения из JavaScript обрабатываются в функции HandleMessage, определены в вашем С. :: Instance:

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

В вашем примере, вы отправляете строковое значение. Чтобы извлечь его, вы можете использовать С. :: 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 и даже произвольные объекты.

Смежные вопросы