gpt4 book ai didi

javascript - 使用 Telnet 的 Node.js 客户端和服务器游戏

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:05 24 4
gpt4 key购买 nike

我正在尝试使用 Node.js 创建一个基本游戏(仅限文本),它是“网络”库。
我有点碰壁了。我似乎无法弄清楚如何提示用户输入一些信息,并等待用户输入所述信息。

这是我目前的代码。这是相当基本的,当您运行客户端时会为您打印出 2 行,然后挂起。正是在这一点上,我希望用户能够输入信息。我不确定这里有几件事:
1. 如何让用户输入? (更具体地说,是客户端还是服务器端)
2. 按下回车后如何将数据发送到服务器?

就 Telnet 而言,我已经阅读了一些文档,这引出了我的最后一个问题:Node 中的 Telnet 模块是否真的适合这个,或者是否有更好的客户端/服务器创建和通信替代方案?



客户端代码:

var connect = require('net');

var client = connect.connect('80', 'localhost');
console.log('Connection Success!\n\n');
client.on('data', function(data) {
// Log the response from the HTTP server.
console.log('' + data);
}).on('connect', function() {
// Manually write an HTTP request.
//I'm assuming I could send data at this point here, on connect?
}).on('end', function() {
console.log('Disconnected');
});



服务器代码:

var net = require('net');

var sockets = [];

function cleanInput(data) {
return data.toString().replace(/(\r\n|\n|\r)/gm,"");
}

function receiveData(socket, data) {
var cleanData = cleanInput(data);
if(cleanData === "quit") {
socket.end('Goodbye!\n');
}
else {
for(var i = 0; i<sockets.length; i++) {
if (sockets[i] !== socket) {
sockets[i].write(data);
}
}
}
}

function closeSocket(socket) {
var i = sockets.indexOf(socket);
if (i != -1) {
sockets.splice(i, 1);
}
}

function newSocket(socket) {
sockets.push(socket);
socket.write('Welcome to the Battleship Server!\n\n');
socket.write('Please enter a username: ');
socket.on('data', function(data) {
receiveData(socket, data);
})
socket.on('end', function() {
closeSocket(socket);
})
}


var server = net.createServer(newSocket);
server.listen(80);


提前致谢!

最佳答案

  • 您想使用 process.stdinprocess.stdout 与终端的输入/输出进行交互。看看here .
  • 您可以在使用 process.stdin.once('data', function(data){/* ... */}) 按下回车键时向服务器发送数据。 .once 方法可确保在用户按下回车键时仅调用一次回调。

客户端代码应该是这样的:

var connect = require('net');

var client = connect.connect('80', 'localhost');
client.on('data', function(data) {
console.log('' + data);
process.stdin.once('data', function (chunk) {
client.write(chunk.toString());
});
}).on('connect', function() {
client.write('Hello');
}).on('end', function() {
console.log('Disconnected');
});

关于javascript - 使用 Telnet 的 Node.js 客户端和服务器游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093660/

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