我正在通过子进程模块使用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}`);
});
服务器运行得很好,我可以加入它并播放,但我得到了服务器必须在控制台中返回的丢失信息。
如果我从控制台手动运行服务器,它会显示所有这些信息。但如果我在这个节点上运行它,应用程序只显示这些信息(我使用了pastebin,因为有太多的行无法直接粘贴在这里(
我错过了我想要的最重要的信息,这些信息都是以L
字符开头的行,它们是服务器日志,告诉我每一场比赛中发生了什么。
我阅读了文档,但找不到任何关于它的信息,还尝试过message
和log
之类的侦听器,但其中任何一个都可以检索信息。
知道怎么得到这些信息吗?谢谢
解决方案是:
- 这个Node.js程序只执行带有子进程的服务器
- 服务器运行后,直接通过RCON协议进行通信
就这么简单,我不需要从头开始构建一个巨大的程序,使用RCON协议,我可以读取所有输出并发送命令,就像我在ingame控制台中所做的那样。