原生消息Chrome

我试图在我的chrome扩展和我的c#应用程序之间获取Native Messaging。 javascript工作正常,但我收到此错误:

与本机消息传递主机通信时出错。

正如我从任务管理器中看到的那样,应用程序确实与扩展一起启动。 这是我的c#代码。

private static string OpenStandardStreamIn() { //// We need to read first 4 bytes for length information Stream stdin = Console.OpenStandardInput(); int length = 0; byte[] bytes = new byte[4]; stdin.Read(bytes, 0, 4); length = System.BitConverter.ToInt32(bytes, 0); string input = ""; for (int i = 0; i > 0) & 0xFF)); stdout.WriteByte((byte)((DataLength >> 8) & 0xFF)); stdout.WriteByte((byte)((DataLength >> 16) & 0xFF)); stdout.WriteByte((byte)((DataLength >> 24) & 0xFF)); //Available total length : 4,294,967,295 ( FF FF FF FF ) Console.Write(msgdata); } 

主要function:

 static void Main(string[] args) { string message = "test message from native app."; OpenStandardStreamOut(message); while (OpenStandardStreamIn() != null || OpenStandardStreamIn() != "") { OpenStandardStreamOut("Received to Native App: " + OpenStandardStreamIn()); OpenStandardStreamOut("Recieved: " + OpenStandardStreamIn()); } } 

JS代码:

 var host_name = "com.example.native"; var port = null; connectToNative(); function connectToNative() { console.log('Connecting to native host: ' + host_name); port = chrome.runtime.connectNative(host_name); port.onMessage.addListener(onNativeMessage); port.onDisconnect.addListener(onDisconnected); sendNativeMessage("test"); } function sendNativeMessage(msg) { message = {"text" : msg}; console.log('Sending message to native app: ' + JSON.stringify(message)); port.postMessage(message); console.log('Sent message to native app: ' + msg); } function onNativeMessage(message) { console.log('recieved message from native app: ' + JSON.stringify(msg)); } function onDisconnected() { console.log(chrome.runtime.lastError); console.log('disconnected from native app.'); port = null; } 

主机清单:

 { "name": "com.example.native", "description": "Native support for Chrome Extension", "path": "NativeApp.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://ajfkjfmkedgcgdckdkmppfblonpeench/" ] } 

是的,因为你发送了错误的数据长度。 在您的OpenStandardStreamOut函数msgdata.Length更改为msgdata.Length