1
我在node.js中啓動了一個學校項目。這是一個由兩個通過TCP套接字連接的node.js服務器組成的系統。通過node.js中的TCP實現可靠的消息傳遞
我嘗試了一些TCP庫(來自節點本身的net模塊,來自nodejitsu的nssocket,現在我正在試驗zeromq),但它們似乎沒有一個重要特性:消息傳遞確認。
我想有一些類型的庫,允許做這樣的事情:
client.connect(server, port);
client.send(data, function callback(err, res) { ... });
將消息傳遞或當壞事(超時,網絡故障後的回調函數將被稱爲)在發送過程中發生。
我在想我會通過TCP編寫我自己的協議,但我更喜歡somethink更強大和測試。
感謝任何建設性的答案:)
我想你可以送東西回了句「是的,我明白了」可以肯定。即使它到達最終的物理目的地,緩衝等等呢?再加上這是TCP,沒有「信息」這樣的東西。這是一個流。 – 2012-03-23 14:57:50
是的,我想到了這樣的事情。但是現在我應該怎麼辦?「是的,我知道了」包丟失了?緩衝不是一個真正的問題(我認爲) - 我使用處理它的nssocket庫(或者我可以簡單地寫一些包裝器來爲數據添加分隔符)。我正在尋找的是某種類型的庫,它通過TCP提供「消息抽象」,並確保消息是交付還是丟失......這個要求對我來說是絕對至關重要的(我不認爲這是異域風情:)我幾乎可以肯定其他人也必須處理它......) – kobza 2012-03-23 15:33:51
Err,TCP中沒有「丟失的數據包」,或者確實是「數據包」之類的東西。它是一個流,並且該流中字節的傳遞和順序是_guaranteed_(顯然,除非套接字關閉或其他)。不能保證的是,數據是分散的還是集中在一起的。 – 2012-03-23 15:40:35