2013-04-01 2 views
0

У меня есть TCP-соединение node.js, которое я создал с помощью net.connect, который прослушивает входящие данные, используя обратный вызов Event: 'data'. Если я получаю два или более сообщения примерно одновременно, я теряю их всех, кроме первого. Может ли обработка, которую я выполняю в обратном вызове Event: «data», заставляет меня пропускать входящие сообщения?Является ли мой node.js net «событие: данные» блокированием обратного вызова и предотвращением приема нового TCP-сообщения?

myConnection = net.connect(18000, 192.168.1.50); 
myConnection.on('data', function(data) { 
    console.log("Received data"); 
    //time consuming process here (more than a few milliseconds) 
}); 

Если два или более TCP сообщения (до 200 байт каждый) отправляются в мое приложение узла быстро (в течение нескольких миллисекунд) консоль печатает только одно сообщение:

Received data 

ли Узел проигранного второе и более поздние сообщения при запуске обратного вызова onData? Оставляет ли узел очереди сообщений, поэтому, даже если я в обратном вызове, последующие сообщения будут ждать, чтобы их можно было прочитать? Есть вероятность, что программа, отправляющая сообщения приложения Node, не отправляет их правильно, но я посмотрел на нее и, кажется, отправил их.

ответ

1

Вы пытаетесь вывести полученные данные? Я думаю, что все ваши данные были получены правильно. Нет гарантий, что количество data событий будет равно числу write методов, потому что это просто поток.

+0

Ах, блестящий. Это была моя проблема. В полученном событии 'data' было отправлено более одного отправленного сообщения. Я получал все данные, а не отдельные сообщения. –

 Смежные вопросы

  • Нет связанных вопросов^_^