Я отправляю текстовые команды, разделенные новой строкой, на TCP-сервер пользовательского протокола. В приведенном ниже примере я выдаю 2 команды и получаю письменный ответ. Он работает, как и ожидалось, в telnet и netcat:
$ nc localhost 1234
command1
command2
theresponse
Тот же рабочий процесс не работает при подключении к Node.js:
var net = require('net');
var client = net.connect(1234, 'localhost');
client.on('data', function(data) {
console.log('data:', data.toString());
});
client.on('error', function(err) {
console.log('error:', err.message);
});
client.write('command1\n');
client.write('command2\n');
Я ожидаю, что после запуска этой программы я увижу «данные: ответ», написанный на консоли, однако ничего не печатается. Я также пытался выполнить запись внутри обратного вызова «connect», но у меня те же результаты. Любопытно то, что когда я пробую это в Node REPL... это работает:
$ node
> var net = require('net')
undefined
> var client = net.connect(1234, 'localhost')
undefined
> client.on('data', function(data) { console.log('data:', data.toString()); })
{ ... }
> client.write('command1\n')
true
> client.write('command2\n')
true
> data: theresponse
У кого-нибудь есть идеи по поводу этого странного поведения?
Спасибо.
-Скотт