5
我正在嘗試使用Node.js創建基本遊戲(僅文本),它是'net'庫。
我正在碰壁。我似乎無法弄清楚如何提示用戶輸入一些信息,並等待用戶輸入所述信息。
使用Telnet的Node.js客戶端和服務器遊戲
這裏是我到目前爲止的代碼。這是相當基礎的,當你運行客戶端時會爲你打印兩行,然後掛起。正是在這一點上,我希望用戶能夠輸入信息。我不確定這裏有幾件事:
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);
提前感謝!