我目前正在尝试为StreamDeck编写一个插件,以便将TCP messages发送到同一网络上的一台没有互联网连接的计算机。因此,当按钮被按下时,我必须发送一条特定的消息,但我不知道如何将数据从javascript文件传递到node.js TCP server。有没有人能帮我一下?
发布于 2021-06-22 17:25:29
是的,对不起,所以在我的JS代码中,当用户按下键时,我发送了一个HTTP请求:
onKeyUp: async function (jsn, mode) {
const order = structureMessage(jsn, mode);
console.log(order);
try {
console.log(`[onKeyUp] ${JSON.stringify(jsn)}`);
const raw = await fetch(jsn.payload.settings.targetUrl, {
method: "POST",
headers: {
"content-type": "application/json"
},
body: JSON.stringify({message: order})
})
const respData = await raw.text();
console.log(respData);
}
catch(error) {
console.error(error);
}
}函数structureMessage将为我获取一个字符串,该字符串对应于使用CII协议的消息。
这是我的服务器的代码:
const host = '127.0.0.1';
const HTTPport = '8080';
const TCPport = '8081';
const CIIconnection = require('./connection.js');
const CII = new CIIconnection(host, TCPport);
const net = require('net');
const serverTCP = new net.createServer();
let sockets = [];
serverTCP.on('connection', (socket) => {
console.log('new Client');
sockets.push(socket);
socket.setEncoding("utf8");
socket.on('data', (data) => {
console.log('receive data from socket : ', data);
socket.write('*ok\r\n')
});
socket.on('end', function () {
sockets.splice(sockets.indexOf(socket), 1);
console.log('socket end');
});
});
serverTCP.listen(TCPport, host, () => {
console.log(`Server TCP running at http://${host}:${TCPport}`);
});
const express = require('express');
const appHTTP = express();
appHTTP.use(express.urlencoded({ extended: true }));
appHTTP.use(express.json());
appHTTP.post('/myaction', async function (req, res) {
res.send('You sent "' + req.body + '".');
try {
await CII.sendCommand(req.body.message);
console.log('commande envoyé')
} catch (error) {
console.error(error);
}
});
appHTTP.listen(HTTPport, host, async () => {
console.log(`Server HTTP running at http://${host}:${HTTPport}`);
await init();
});
async function init() {
try {
await CII.connect();
} catch (e) {
console.error(e);
}
}我想要的是直接将数据发送到我正在创建的TCP客户端,而不是使用HTTP服务器。有可能吗?
我是一个新手,所以我不知道你是否会理解这段代码,但还是要谢谢你。
https://stackoverflow.com/questions/68068356
复制相似问题