【发布时间】:2022-11-01 17:48:23
【问题描述】:
我需要知道在每个回调函数结束后如何执行代码行。
我正在使用rcon 包将 rcon 命令发送到托管 Counter Strike 1.6 服务器的半条命专用服务器 (HLDS) 并获取响应。问题是有时响应被分成几部分(我认为这是由于与 UDP 的连接,TCP 不起作用)。首先,我在 conn.on() 中使用 res.send() 和事件“响应”回调函数,但我收到错误消息说无法发送 HTTP 标头。 我了解了 res.write(),它可以保存我需要的内容,然后再使用 res.send()。但是我不知道在所有“响应”都回来之后我可以使用 res.send() 的正确位置在哪里。我尝试在 conn.connect() 和其他地方之后使用该命令,但它没有奏效。
app.post("/", function(req, res) {
var resp = "";
var ip = req.body.serverip;
var pass = req.body.pass;
var command = req.body.command;
var options = {
tcp: false,
challenge: true
};
var conn = new Rcon(ip, 27015, pass, options);
conn.on('auth', function () {
// You must wait until this event is fired before sending any commands,
// otherwise those commands will fail.
console.log("Authenticated");
console.log("Sending command:" + command);
conn.send(command);
});
conn.on('response', function(str) {
console.log("Response: "+str);
res.write(str);
});
conn.on('error', function (err) {
console.log("Error: " + err);
});
conn.on('end', function () {
console.log("Connection closed");
process.exit();
});
conn.connect();
});
【问题讨论】:
-
RCON 客户端与 RCON 服务器建立连接一次然后收到许多回应。相比之下,HTTP 客户端使一请求和接收一回复。目前尚不清楚您希望如何将这两者结合在一起。您想使用您为响应
POST /请求而共享的代码构建什么 HTTP 响应? -
我想取回所有响应并将它们发送到一个简单的 HTML 页面。例如,当服务器有很多玩家或已满时,使用带有 rcon 的 status 命令,响应分为多个部分,这对于控制台来说很好。我想知道如何在它们完成后使用多个响应并将它们一起发送。
-
如果有多个部分,你如何识别最后一个部分?
标签: javascript node.js npm rcon