Промывка socker node.js пишет - PullRequest
       2

Промывка socker node.js пишет

0 голосов
/ 16 сентября 2018

У меня есть пример node.js, где клиентский сокет делает две записи на сервер.Я пытаюсь убедиться, что сервер получает записи одну за другой, используя socket.write с обратным вызовом:

var net = require('net');

const HOST = '127.0.0.1';
const PORT = 7000;

var server = new net.Server(socket => {
    socket.on('data', data => {
        console.log("Server received: " + data);
    })
});
server.listen(PORT, HOST);

var client = new net.Socket();
client.connect(PORT, HOST);
client.write("call 1", "utf8", () => {
    client.write("call 2");
});

Когда я его запускаю, я получаю вывод:

Server received: call 1call 2

Согласно документации здесь https://nodejs.org/api/net.html#net_socket_write_data_encoding_callback:

... Необязательный параметр обратного вызова будет выполнен, когда данные будут окончательно записаны ...

Что в итоге означает данные ?Как заставить сервер выдавать:

Server received: call 1
Server received: call 2 

Спасибо, Динко

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Вы можете установить тайм-аут для второго события.

client.write("call 1", "utf8")
setTimeout(() => {
   client.write("call 2");
 }, 100);
0 голосов
/ 16 сентября 2018

Вы имеете дело с потоком.Он ничего не знает о начале и конце ваших сообщений.

  1. Вам необходимо добавить разделитель (например, \n: client.write("call 2\n");)
  2. Вам необходимо разделить данные по разделителюна приемнике (например, разделенный пакет узла).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...