kikko
kikko

Reputation: 71

chrome.sockets.udp.send() not sending data (sendInfo.bytesSent == 0)

I'm having trouble sending data using udp in a chrome app.

1) I create a nodejs simple udp server listening on port 6454 :

var dgram = require("dgram");

var server = dgram.createSocket("udp4");

server.on("error", function (err) {
  console.log("server error:\n" + err.stack);
  server.close();
});

server.on("message", function (msg, rinfo) {
  console.log("server got: " + msg + " from " +
    rinfo.address + ":" + rinfo.port);
});

server.on("listening", function () {
  var address = server.address();
  console.log("server listening " +
      address.address + ":" + address.port);
});

server.bind(6454);

I've tested the server with another nodejs app and it works. But when it doesn't when I try to send this server some data from a chrome app using chrome.sockets.udp :

var address = "127.0.0.1";
var port = 6454;
var data = new ArrayBuffer("some random bytes");

chrome.sockets.udp.create({}, function (socketInfo) {
  var socketId = socketInfo.socketId;
  chrome.sockets.udp.bind( socketId, "0.0.0.0", 0, function (result) {

    chrome.sockets.udp.getInfo( socketId, function(result){
      console.log(result);
    });

    if(result < 0) {
      console.log(chrome.runtime.lastError.message);
    } else {
      chrome.sockets.udp.send( socketId, data, address, port, function (sendInfo) {
        if (sendInfo.resultCode < 0) {
          console.log(chrome.runtime.lastError.message);
        } else {
          console.log(sendInfo);
        }
      });
    }
  });
});

With this code, nothing received on the other end and the sendInfo object is :

bytesSent : 0
resultCode : 0

I've added 2 wildcards on my chrome app manifest :

{
  "manifest_version": 2,

  "name": "Artnet (udp) test",
  "description": "test",
  "version": "0.1",
  "minimum_chrome_version": "33",
  "app": {
    "background": {
      "scripts": ["chrome_app.js"]
    }
  },
  "sockets": {
    "udp": {
      "bind" : "*",
      "send" : "*"
    }
  }
}

Any idea on what that problem could be would be greatly appreciated ! Thanks !

Upvotes: 0

Views: 2033

Answers (2)

kikko
kikko

Reputation: 71

Oops, the error comes from var data = new ArrayBuffer("some random bytes"); I can't initialize an ArrayBuffer that way, I need to use an Int8Array.

Upvotes: 1

Peter ang
Peter ang

Reputation: 1

var data = str2ab("fdfdfd");

function str2ab(str) {
  var buf = new Int8Array(str.length); 

  for (var i=0, strLen=str.length; i < strLen; i++) {
    buf[i] = str.charCodeAt(i);
  }

  return buf.buffer;
}

Upvotes: 0

Related Questions