簡體   English   中英

使用Telnet的Node.js客戶端和服務器游戲

[英]Node.js client and server game using Telnet

我正在嘗試使用Node.js創建一個基本游戲(只有文本),它是'net'庫。
我打了一堵牆。 我似乎無法弄清楚如何提示用戶輸入一些信息,並等待用戶輸入所述信息。

這是我到目前為止的代碼。 這是相當基本的,當你運行客戶端時會打印出2行,然后掛起。 就在那時,我希望用戶能夠輸入信息。 我不確定這里的一些事情:
1.如何讓用戶輸入? (更具體地說,是客戶端還是服務器端)
2.按Enter鍵時如何將數據發送到服務器?

我已經閱讀了一些關於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與來自/到終端的輸入/輸出進行交互。 看看這里
  • 使用process.stdin.once('data', function(data){ /* ... */ })按下enter時,可以將數據發送到服務器。 .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');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM