Взаимодействие Node Client Server с событиями данных - PullRequest
0 голосов
/ 08 июля 2019

Я играл с сегментами кода и, похоже, не могу понять это.

То, что я пытаюсь сделать, - это обмен данными между клиентом и сервером, работающим с require('net'). У меня, кажется, возникают проблемы в моем .on('data' мероприятии, это явно вопрос понимания, но я не могу понять это.

Вот фрагмент кода моего сервера:

server.on('connection', connection => {
// ...
  connection.on('data', (data) => {
    if (/list/.test(data)) {
        // does something async
      connection.write(listOfFiles.join('\n'));
    }
// ...

Он просто пытается прослушать команду "list" и вывести результат функции в событии .write.

Вот фрагмент кода моего клиента:

client.on('connect', () => {

  client.on('data', (data) => {
    console.log(data);

    askQuestion((error,answer) => {
      if (error) {
        return error;
      } else {
        client.write(answer);
      }
    });
  });
});

С дополнительной функцией:

const askQuestion = (callback) => {
  rl.question(`> `, (answer) => {
    callback(null, answer);
    rl.close();
  });
};

Кажется, я понимаю, что происходит, client.on('data' никогда не разрешается полностью, поэтому я могу запустить команду "list" один раз, но она не позволит мне запустить ее во второй раз. Вот где я немного застрял. Я поиграю с разными способами рефакторинга своего кода, в надежде заставить его работать, но если у кого-то есть какие-либо предложения, я буду благодарен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...