Chromeネイティブメッセージングを初めて使用し、Chrome拡張機能とネイティブアプリ間の接続を確立したいと考えています。明確にするために、拡張機能からメッセージを受信して処理し、他のメッセージを送り返したいと思います。しかし今、私は一方の側からそれをやろうとしています。それについて必要なすべての情報を読んだ後、私は自分の拡張機能が沈黙を保ち、受信した(潜在的に)メッセージをログに記録しないという問題に直面しました。
ポップアップ.js:
let port = chrome.runtime.connectNative("com.defus.nodejs");
console.log("Waiting for response...");
port.onMessage.addListener((response) => {
console.log("Received: " + response);
});
マニフェスト.json(アプリケーション):
{
"name": "com.defus.nodejs",
"description": "Run Node.JS",
"path": "./node.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://myid/"
]
}
node.bat:
@echo off
node ./index.js
index.js(nodejs):— Node.jsで記述されたネイティブアプリからChrome拡張機能にメッセージを送信するにはどうすればよいですか?(リンクを使用してみましたが、https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging$compare?locale = en-US&to = 1595872&from =などのリンクを使用しました。コメントからの1593969が壊れています...)
const header = Buffer.alloc(4);
let message = "something\n";
header.writeUInt32LE(message.length, 0);
process.stdout.write(header);
process.stdout.write(message);
アプリケーションComputer\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.defus.nodejs
をregeditに登録しました。ランダムなアプリを起動するだけで、すべてが正常に機能します。
絶対パスを使用したり、jsonオブジェクト(および文字列化されたオブジェクト)を送信したり、nodejsアプリからメッセージを取得するその他のさまざまな実装を試みたりしましたが、解決策は役に立ちませんでした。「応答を待っています...」というメッセージが表示されますが、それ以上は何もありません。誰かが私が必要なことをする方法の簡単な例を提供できますか?
他のいくつかの検索の後、私は自分の問題の解決策を見つけたようです。ここに私のステップ:
上記のルールのいずれかが守られていない場合、ネイティブアプリは機能しません。だから私は、私の名前を変更していることnode.bat
でindex.bat
、送信しようとしたlet message = JSON.stringify({ message: "something" });
-そしてそれは動作します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加