Я пытаюсь написать простую клиент-серверную программу в Node.js, где клиент будет вводить 2 аргумента (например, пользователь будет набирать S 4
, чтобы получить значение квадратный корень из 4) для математического вычисления, отправьте его на сервер, и сервер вернет ответ. Он работает по большей части; однако, когда сервер возвращает ответ, клиент отображает ответ, а также отображает исходный ввод. Может ли кто-нибудь указать, почему это происходит?Отправка данных от клиента на сервер в Node.js
server.js
var net = require('net');
var server= net.createServer(function(c) {
console.log('server connected');
c.on('end', function() {
console.log('server disconnected');
});
c.on('data', function(data) {
data = data.toString().split(" ");
var num = parseInt(data[1], 10);
switch (data[0]){
case 'S':
c.write(Math.sqrt(num).toString());
}
});
c.write('What would you like to do?\n');
c.write('(S) - Square root <arg>\n');
c.pipe(c);
});
server.listen(3000, function() {
console.log('server bound');
});
client.js
var net = require('net');
var num = 1;
var client = net.connect({port:3000}, function() {
console.log('client connected');
});
client.on('data', function(data) {
if (num == 1) {
console.log(data.toString());
process.stdin.resume();
process.stdin.once('data', function(input) {
client.write(input);
});
num++;
} else {
console.log("Server returned: " + data.toString() + "\n");
process.exit();
}
});
client.on('end', function() {
console.log('\nclient disconnected\n');
});
Для уточнения: когда вход S 4
в клиенте, результат выводится на экран является Server returned: 2S 4
Я бы сказал, удалить или найти альтернативу запятой трубы d ... но я использовал только экспресс в качестве веб-сервера, так как его проще передать в названных переменных –