2017-04-07 301 views
1

我想開發基本的擴展。這個擴展應該在UDP上進行通信。這個擴展是關於消息。我想創建一個客戶端。因爲我用Java創建了一個服務器。客戶端可以向服務器發送消息,服務器可以向客戶端發送消息谷歌瀏覽器擴展使用UDP

我看看Chrome Developer頁面。但這些文件不是最新的。我創建了這樣一個基本的客戶端:

// values 
var address  = null; 
var connect  = null; 
var disconnect = null; 

// UDP-Object 
var echoClient = null; 

// ------------------------------------------------------------------------------------------------------------------- 

window.addEventListener("load", function() { 

    // input: address.val 
    address = document.getElementById("address"); 

    // button: connect.val 
    connect = document.getElementById("connect"); 

    // button: disconnect.val 
    disconnect = document.getElementById("disconnect"); 

    // button: connect.func 
    connect.onclick = function(ev) { 
    if(address.value != ""){ 
     echoClient = newEchoClient(address.value); 
    } 
    }; 

    // button: disconnect.func 
    disconnect.onclick = function(ev) { 
    echoClient.disconnect(); 
    } 

    // send data 
    setInterval(function(){ 
    echoClient.sender(); 
    }, 1000); 

}); 

// ------------------------------------------------------------------------------------------------------------------- 

var newEchoClient = function(address) { 
    var ec   = new chromeNetworking.clients.echoClient(); 
    ec.sender   = attachSend(ec); 
    var hostnamePort = address.split(":"); 
    var hostname  = hostnamePort[0]; 
    var port   = (hostnamePort[1] || 7) | 0; 
    ec.connect(
    hostname, port, 
    function() { 
     console.log("Connected"); 
    } 
); 
    return ec; 
}; 

var attachSend = function(client) { 
    var i = 1; 
    return function(e) { 
    var data = i; 
    i++; 
    client.echo(data, function() { 
     console.debug(data.data); // the problem is here 
    }); 
    }; 
}; 

但是這段代碼不起作用。在Chrome中,我發現了這個錯誤:

Error in event handler for sockets.udp.onReceive: RangeError: byte length of Uint32Array should be a multiple of 4 
    at chrome-extension://boeaihphlidceiemkegklmbmefjgogfk/networking.js:84:25 
    at chrome-extension://boeaihphlidceiemkegklmbmefjgogfk/networking.js:31:34 

哪裏出錯?我對這個問題做了什麼?

回答

1

AFAIK,Chrome擴展程序無法使用UPD進行通信。如此post中所述,您既可以使用應用程序又可以使用擴展程序進行通信,或者使用擴展程序和Native Host

我認爲只有Chrome應用可以使用套接字API,而不是此post中所述的Chrome擴展。

您還可以檢查此:

關於Chrome擴展引用會談不能使用chrome.socket。

希望這會有所幫助。