Error de socket no conectado al usar chrome.sockets.udp
google-chrome-app (1)
Intenté ejecutar el siguiente código como una extensión de Chrome desempaquetada y obtuve el siguiente resultado en mi consola:
clicked
sent undefined
Error listening: net::ERR_SOCKET_NOT_CONNECTED
También estoy usando un software separado para crear un servidor UDP en el puerto 11111 y no recibe nada.
manifest.json
{
"name": "UDP Test",
"description": "Testing UDP connection.",
"version": "0.1",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"minimum_chrome_version": "33",
"sockets": {
"udp": {
"send": "*"
}
}
}
background.js
// On app launch
chrome.app.runtime.onLaunched.addListener(function() {
// Create window
chrome.app.window.create(''window.html'', {
''bounds'': {
''width'': 400,
''height'': 500
}
});
});
window.html
<html>
<head>
<button id="test">Run</button>
<script src="network.js"></script>
</head>
<body>
</body>
</html>
network.js
test.addEventListener(''click'', function() {
console.log("clicked");
chrome.sockets.udp.create({}, function (socketInfo) {
// The socket is created, now we can send some data
var socketId = socketInfo.socketId;
var arrayBuffer = stringToArrayBuffer("hello");
chrome.sockets.udp.send(socketId, stringToArrayBuffer("hello"), "127.0.0.1", 11111, function(sendInfo) {
console.log("sent " + sendInfo.bytesSent);
if (sendInfo.resultCode < 0) {
console.log("Error listening: " + chrome.runtime.lastError.message);
}
});
});
});
function stringToArrayBuffer(string) {
var buffer = new ArrayBuffer(string.length * 2);
var bufferView = new Uint16Array(buffer);
for (var i = 0, stringLength = string.length; i < stringLength; i++) {
bufferView = string.charCodeAt(i);
}
return buffer;
}
¿Alguna idea de por qué está pasando esto? He encontrado varios ejemplos de Chrome udp pero todos usaron las API experimentales y no esta.
Te estás perdiendo bind (). La documentación dice "El socket debe estar vinculado a un puerto local antes de llamar al método [the send]".