首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据从javascript发送到node.js TCP服务器?

如何将数据从javascript发送到node.js TCP服务器?
EN

Stack Overflow用户
提问于 2021-06-21 20:57:33
回答 1查看 118关注 0票数 0

我目前正在尝试为StreamDeck编写一个插件,以便将TCP messages发送到同一网络上的一台没有互联网连接的计算机。因此,当按钮被按下时,我必须发送一条特定的消息,但我不知道如何将数据从javascript文件传递到node.js TCP server。有没有人能帮我一下?

EN

回答 1

Stack Overflow用户

发布于 2021-06-22 17:25:29

是的,对不起,所以在我的JS代码中,当用户按下键时,我发送了一个HTTP请求:

代码语言:javascript
复制
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协议的消息。

这是我的服务器的代码:

代码语言:javascript
复制
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服务器。有可能吗?

我是一个新手,所以我不知道你是否会理解这段代码,但还是要谢谢你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68068356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档