8

Chrome uzantı ve C# uygulamam arasında Yerel Mesajlaşma almaya çalışıyorum. çalışıyor, ancak bu hatayı alıyorum javascript: Ben Görev Yöneticisinden gördüğümüz gibiYerel Mesajlaşma Chrome

Error when communicating with the native messaging host.

uygulama, uzantı ile birlikte başlatılan olsun gelmez. İşte benim C# kodum.

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 < length;i++)  
    { 
     input += (char)stdin.ReadByte(); 
    } 

    return input; 
} 

private static void OpenStandardStreamOut(string stringData) 
{ 
    //// We need to send the 4 btyes of length information 
    string msgdata = "{\"text\":\"" + stringData + "\"}"; 
    int DataLength = stringData.Length; 
    Stream stdout = Console.OpenStandardOutput(); 
    stdout.WriteByte((byte)((DataLength >> 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); 
} 

Ve ana işlevi:

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 Kod:

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; 
} 

Sunucu Bildirim: Yanlış veri uzunluğunu göndermek çünkü Evet işte

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

Fikirler var mı? –

+0

Yerel ana makine bildiriminizi ve Xan'a istediginiz gibi yapilan JS taraf kodunu – Xan

+0

ekleyin. Lütfen yardım et. –

cevap

22

. OpenStandardStreamOut işlevinizde stringData.Length değerini msgdata.Length olarak değiştirin.

+1

THANKS ALOT !! NEDEN ÇALIŞIYORUM ÇALIŞAMADIM! –

+9

@ user3692525 Lütfen cevabı kabul edildi olarak işaretleyin. – Xan

İlgili konular