понимание модуля узла - LTS-события - PullRequest
0 голосов
/ 01 августа 2020

Я могу подключиться к удаленному серверу, используя этот код:

var fs = require('fs');

var options = {
  //pem p12 files
};

var socket = tls.connect(8000, options, function() {
  console.log('client connected',socket.authorized ? 'authorized' : 'unauthorized');
//code to write data to socket here
  process.stdin.pipe(socket);
  process.stdin.resume();
});

socket.on('data', function(data) {
  console.log(data);
});
socket.on('end', function() {
  console.log('confirm end');
});

Вот как это описано здесь. https://node.readthedocs.io/en/stable/api/tls/

Как заставить сокет ждать события on-data, а не go on-end до того, как on-data будут выполнены? Возможно ли, что сервер не отправляет данные и не отвечает напрямую end?

1 Ответ

1 голос
/ 02 августа 2020

Вам не нужно (и вы не можете) принудительно устанавливать порядок, в котором сервер будет генерировать события на стороне клиента. Говоря socket.on, вы регистрируете обратный вызов для события, которое будет выполнено позже, когда сервер испускает соответствующее событие.

События не следуют порядку, в котором вы указываете его в своем приложении (что это просто порядок, в котором вы регистрируете эти обратные вызовы, а не порядок, в котором события будут получены и обработаны).

Возможно ли, что сервер не отправляет данные и не отвечает напрямую end?

Сервер может делать все, что он запрограммирован. Он может вообще не отвечать.

...