Я пытаюсь сгенерировать 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?