Aby macierzysty host przesyłania komunikatów przesłał dane z powrotem do Chrome, musisz najpierw wysłać cztery bajty informacji o długości, a następnie wysłać sformatowaną wiadomość JSON jako ciąg znaków/tablicę znaków.
Poniżej znajdują się dwa przykłady dla C i C++ odpowiednio, które robią to samo na nieco inny sposób.
C Przykład:
#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++ przykład:
#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;
}
(. Rzeczywista komunikatu mogą być wysyłane w tym samym czasie, w którym informacje o długości, jest jedynie wyłamany dla jasności)
Tak postępując zgodnie z przykładem OP Chrome, oto jak wypisać komunikat:
port.onMessage.addListener(function(msg) {
console.log("Received" + msg.text);
});
W rzeczywistości nie ma wymogu używania "text" jako klucza zwróconego przez natywną aplikację do wysyłania wiadomości; to może być cokolwiek.Ciąg JSON przekazany do odbiornika z Twojej natywnej aplikacji do obsługi wiadomości jest konwertowany na obiekt JavaScript.
Na przykład C++ native aplikacji wiadomości, która korzysta z powyższej techniki w połączeniu z jsoncpp (biblioteka C++ JSON), a także analizuje wniosek wysłany do aplikacji, zobacz tutaj: https://github.com/kylehuff/libwebpg/blob/22d4843f41670d4fd7c4cc7ea3cf833edf8f1baf/webpg.cc#L4501
Czytałaś https://developer.chrome.com/extensions/messaging.html#native-messaging? –
Zrobiłem, i to nie odpowiada na pytanie? –