2013-04-01 62 views
0

我有一個使用net.connect創建的node.js TCP連接,它使用Event:'data'回調來監聽傳入數據。如果我幾乎在同一時間收到兩封或更多封郵件,除第一封郵件外,我都會丟失它們。我在事件中處理的事情:'data'回調會導致我錯過傳入的消息嗎?是我的node.js網絡「事件:數據」回調阻止並阻止新的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回調?節點是否排隊消息,所以即使我在回調中後續消息將等待被讀取?有可能發送我的節點應用程序消息的程序沒有正確發送它們,但我已經看過它,它似乎在發送它們。

回答

1

您是否嘗試輸出收到的數據?我認爲您的所有數據都已正確收到。沒有保證計數的data事件將等於計數write方法,因爲它只是一個Stream。

+0

啊,太棒了。那正是我的問題。收到的'data'事件中有多個發送的消息。我得到的所有數據,只是不是單獨的消息。 –