Проблема при отправке пакетов UDP, сгенерированных через Google Blockly в Chrome App - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь сгенерировать JavaScript код в виде строки, используя Google Blockly в Chrome App. Код включает в себя функцию, которая отправляет пакеты udp на указанный c IP и PORT. Для отправки пакетов udp я использую Chrome App API chrome .sockets.udp . С помощью этого API можно отправлять пакеты udp.

Невозможно выполнить код, сгенерированный блочно, с помощью функции eval () в Chrome App из-за проблем безопасности. Запускать eval () в приложении chrome можно через «песочница» , но «песочницы» не могут использовать API chrome. *. Фактически не может напрямую использовать chrome .sockets.udp .

main. js

window.addEventListener("load", function() {
 document.getElementById("myBtn").addEventListener("click", function() {
        let code = 'let message="Hello";';
        code += Blockly.JavaScript.workspaceToCode(demoWorkspace);
        console.log(code); --> // 'let message="Hello";initiate();'
        try {
          eval(code);
        } catch (e) {
          console.log(e);
        }
      });
    });


const initiate = () => {
  chrome.sockets.udp.create({}, function(socketInfo) {
    var socketId = socketInfo.socketId;
    let message= "Hello";
    chrome.sockets.udp.bind(socketId, "192.168.10.2", 0, function(result) {
    });
    chrome.sockets.udp.send(
      socketId,
      message,
      "192.168.10.1",
      8889,
      function(sendInfo) {
        console.log("result " + sendInfo.resultCode);
      }
    );
  });
};

манифест. json

{
  "manifest_version": 2,
  "name": "Blockly",
  "version": "1.0.0",
  "icons": {
    "128": "icon_128.png"
  },
  "permissions": [],
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  },
  "sockets": {
    "udp": {
      "send": ["*"],
      "bind": ["*"]
    }
  },
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
  "minimum_chrome_version": "46"
}

Я нашел отправку пакетов udp в сети только через приложение chrome. Есть ли другой способ динамически отправлять пакеты udp в сети, выполняя Google Blockly сгенерированную функцию в javascript?

...