节点中的子进程缺少信息

时间:2018-07-31 00:41:04

标签: node.js linux child-process spawn

我正在通过子进程模块运行带有Node.js的Counter-Strike:Source Dedicated Server:

var spawn = require('child_process').spawn;
const server = spawn('./srcds_run', ['-game cstrike', '+map de_dust2', '+maxplayers 10'])
server.on('error', function (error){
    console.log(error);
});
server.stdout.on('data', (data) => {
    console.log(`server stdout:\n${data}`);
});
server.stderr.on('data', (data) => {
    console.error(`server stderr:\n${data}`);
});

服务器运行得很好,我可以加入其中并玩游戏,但是我丢失了服务器必须在控制台中返回的信息。

如果我从控制台手动运行服务器,它将显示所有this info。 但是,如果我从该节点运行它,则该Node应用程序仅显示this info (我使用pastebin是因为有太多行要直接粘贴在这里)

我缺少了我想要的最重要的信息,即以L字符开头的所有行,它们是服务器日志,告诉我每场比赛中发生的一切。

我阅读了documentation,但找不到任何信息,还尝试了messagelog之类的侦听器,但其中的任何一个都检索到信息。

知道如何获取所有这些信息吗?谢谢!

1 个答案:

答案 0 :(得分:1)

解决方案是:

  1. 此Node.js程序仅使用子进程执行服务器
  2. 服务器运行后,将直接通过RCON Protocol
  3. 进行通信

就这么简单,我不需要从头开始构建一个庞大的程序,借助RCON协议,我可以像在游戏机控制台中一样读取所有输出并发送命令。