Để máy chủ nhắn tin gốc gửi dữ liệu trở lại Chrome, trước tiên bạn phải gửi bốn byte thông tin về độ dài và sau đó gửi tin nhắn được định dạng JSON dưới dạng chuỗi/mảng char.
Dưới đây là hai ví dụ cho C và C++ tương ứng làm điều tương tự theo những cách hơi khác nhau.
C Ví dụ:
#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++ ví dụ:
#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;
}
(. Thông điệp thực tế có thể được gửi vào cùng thời điểm với thông tin thời gian, nó chỉ đơn thuần được chia ra cho rõ ràng)
Vì vậy, sau ví dụ về OP Chrome, dưới đây là cách xuất thông báo:
port.onMessage.addListener(function(msg) {
console.log("Received" + msg.text);
});
Trong thực tế, không có yêu cầu sử dụng "văn bản" làm khóa được trả về từ ứng dụng nhắn tin gốc của bạn; nó có thể là bất cứ điều gì.Chuỗi JSON được truyền cho người nghe từ ứng dụng nhắn tin gốc của bạn được chuyển đổi thành một đối tượng JavaScript.
Đối với một C++ ví dụ về một ứng dụng nhắn tin gốc có sử dụng các kỹ thuật nói trên kết hợp với jsoncpp (thư viện C++ JSON) và cũng có thể phân tích các yêu cầu gửi đến ứng dụng, xem tại đây: https://github.com/kylehuff/libwebpg/blob/22d4843f41670d4fd7c4cc7ea3cf833edf8f1baf/webpg.cc#L4501
Bạn đã đọc https://developer.chrome.com/extensions/messaging.html#native-messaging? –
Tôi đã làm, và nó không trả lời câu hỏi? –