I am trying to get Native Messaging between my chrome extension and my c# application. The javascript works fine, but I am getting this error:
Error when communicating with the native messaging host.
The application does get launched along with the extension, as I saw from Task Manager. Here is my c# code.
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); }
And the main 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 Code:
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; }
Host Manifest:
{ "name": "com.example.native", "description": "Native support for Chrome Extension", "path": "NativeApp.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://ajfkjfmkedgcgdckdkmppfblonpeench/" ] }