Damit ein nativer Nachrichtenhost Daten zurück an Chrome senden kann, müssen Sie zunächst vier Byte mit Längeninformationen senden und dann die JSON-formatierte Nachricht als String/Char-Array senden.
Im Folgenden sind zwei Beispiele für C bzw. C++, die auf eine etwas andere Art dasselbe tun.
C Beispiel:
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
// Define our message
char message[] = "{\"text\": \"This is a response message\"}";
// Collect the length of the message
unsigned int len = strlen(message);
// We need to send the 4 bytes of length information
printf("%c%c%c%c", (char) (len & 0xff),
(char) ((len>>8) & 0xFF),
(char) ((len>>16) & 0xFF),
(char) ((len>>24) & 0xFF));
// Now we can output our message
printf("%s", message);
return 0;
}
C++ Beispiel:
#include <string.h>
int main(int argc, char* argv[]) {
// Define our message
std::string message = "{\"text\": \"This is a response message\"}";
// Collect the length of the message
unsigned int len = message.length();
// We need to send the 4 bytes of length information
std::cout << char(((len>>0) & 0xFF))
<< char(((len>>8) & 0xFF))
<< char(((len>>16) & 0xFF))
<< char(((len>>24) & 0xFF));
// Now we can output our message
std::cout << message;
return 0;
}
(. Die eigentliche Nachricht kann zur gleichen Zeit wie die Längeninformationen gesendet werden, sondern lediglich der Übersichtlichkeit halber herausgebrochen ist)
So folgen Sie dem OP Chrome Beispiel, hier ist, wie man die Nachricht ausgibt:
port.onMessage.addListener(function(msg) {
console.log("Received" + msg.text);
});
In Wirklichkeit ist es nicht erforderlich, "text" als Schlüssel zu verwenden, der von Ihrer nativen Messaging-App zurückgegeben wird. es könnte alles sein.Die JSON-Zeichenfolge, die von Ihrer nativen Messaging-App an den Listener übergeben wird, wird in ein JavaScript-Objekt konvertiert.
für ein C++ Beispiel einer nativen Messaging-Anwendung, die die oben beschriebene Technik in Kombination mit jsoncpp (C++ JSON-Bibliothek) und auch die Anforderung an die App gesendet parst verwendet, finden Sie hier: https://github.com/kylehuff/libwebpg/blob/22d4843f41670d4fd7c4cc7ea3cf833edf8f1baf/webpg.cc#L4501
Lasen Sie https://developer.chrome.com/extensions/messaging.html#native-messaging? –
Ich tat, und es beantwortet nicht die Frage? –