gpt4 book ai didi

javascript - 远程 Shell 应用程序 Node.js

转载 作者:行者123 更新时间:2023-11-28 03:05:33 25 4
gpt4 key购买 nike

我使用 .net.readline 模块在 NodeJS 中编写了远程 Shell 应用程序(TCP 服务器)。客户端可以使用 Telnet 命令控制台连接到服务器。但是我在实现 rl.log 方法时遇到了麻烦,该方法不会在客户端 shell 中写入任何内容。其他文件(cmds_user.js、cmds_quiz、js、cmds_favs.js)不相关,它们在本地运行程序时完美工作(没有 TCP 服务器实现)。

const net = require('net');
const user = require("./cmds_user.js");
const quiz = require("./cmds_quiz.js");
const favs = require("./cmds_favs.js");
const readline = require('readline');

let port = 8080;

let server = net.createServer((socket) =>{

let rl = readline.createInterface({
input:socket,
output:socket,
prompt: ">"
});

socket.on('end',()=>{rl.close();});
socket.on('error',()=>{rl.close();});

rl.log = async (msg) => {
await rl.write(msg);
};

rl.prompt();

rl.questionP = async function (string) { // Add questionP to rl interface
return new Promise ( (resolve) => {
this.question(` ${string}: `, (answer) => resolve(answer.trim()))
})
};

rl.on('line', async (line) => {
try{
let cmd = line.trim()

if ('' ===cmd) {}
else if ('h' ===cmd) { user.help(rl);}

else if (['lu', 'ul', 'u'].includes(cmd)) { await user.list(rl);}
else if (['cu', 'uc'].includes(cmd)) { await user.create(rl);}
else if (['ru', 'ur', 'r'].includes(cmd)) { await user.read(rl);}
else if (['uu'].includes(cmd)) { await user.update(rl);}
else if (['du', 'ud'].includes(cmd)) { await user.delete(rl);}

else if (['lq', 'ql', 'q'].includes(cmd)) { await quiz.list(rl);}
else if (['cq', 'qc'].includes(cmd)) { await quiz.create(rl);}
else if (['tq', 'qt', 't'].includes(cmd)) { await quiz.test(rl);}
else if (['uq', 'qu'].includes(cmd)) { await quiz.update(rl);}
else if (['dq', 'qd'].includes(cmd)) { await quiz.delete(rl);}

else if (['lf', 'fl', 'f'].includes(cmd)) { await favs.list(rl);}
else if (['cf', 'fc'].includes(cmd)) { await favs.create(rl);}
else if (['df', 'fd'].includes(cmd)) { await favs.delete(rl);}

else if ('e'===cmd) { rl.log('Bye!'); socket.destroy()}
else { rl.log('UNSUPPORTED COMMAND!'); user.help(rl);}

} catch (err) {
rl.log(` ${err}`);
} finally {
rl.prompt();
}
});

});
server.listen(port);

解决方案:

rl.log = (msg) => {socket.write(`${msg}\n`);};

最佳答案

解决方案

rl.log = (msg) => {socket.write(`${msg}\n`);};

关于javascript - 远程 Shell 应用程序 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60646275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com