Próbuję utworzyć grę podstawową (tylko tekst) przy użyciu pliku Node.js, a jest to biblioteka "net".
Uderzam w ścianę. Nie potrafię wymyślić, jak zachęcić użytkownika do wprowadzenia pewnych informacji i czekać, aż użytkownik wprowadzi te informacje.
Gra klienta i serwera Node.js przy użyciu usługi Telnet
Oto kod, który mam do tej pory. Jest dość prosty i po uruchomieniu klienta wydrukuje 2 linie, a następnie zawiesi się. W tym momencie chcę, aby użytkownik mógł wprowadzić informacje. Nie jestem pewien kilku rzeczy tutaj:
1. W jaki sposób mogę zezwolić użytkownikowi na wpisywanie? (dokładniej: strona klienta lub serwera).
2. Jak wysłać te dane do serwera po naciśnięciu klawisza Enter?
Przeczytałem trochę dokumentacji, jeśli chodzi o Telnet, i to prowadzi mnie do mojego ostatniego pytania: czy moduł Telnet w węźle naprawdę jest odpowiedni do tego, czy istnieje lepsza alternatywa dla tworzenia klienta/serwera i komunikacja? Kod
Klient: Kod
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');
});
Serwer:
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);
Z góry dzięki!