2015-05-20 37 views
0

我使用的是Ubuntu 14.04。一個nodejs - > kafkaesque(kafka nodejs客戶端) - > kafka_2.9.2-0.8.2.1->風暴。在Kafkaesque(kafka nodejs客戶端)中,我注意到在api.js中,有以下行來創建套接字。Kafka,nodejs客戶端(kafkaesque)套接字默認超時

_socket = net.createConnection(_options.port, _options.host); 

我想知道什麼是套接字超時的默認值。如果我想套接字連接總是存在/永久的,我應該setTimeout(0)嗎?

我還會注意到下面的代碼的後半行:

_socket.on('timeout', function(){ 
     console.log('socket timeout'); 
    }); 

如果我想套接字連接永久,應我嘗試在此超時功能再次進行連接?

回答

1

net docs for Node.js

默認情況下net.Socket沒有超時。

因此,除非在其他地方調用socket.setTimeout(),否則套接字不應該有超時。

此外:

當空閒超時被觸發插座會收到一個「超時」的事件,但是連接將不會被切斷。用戶必須手動結束()或銷燬()套接字。

所以你不需要當timeout事件觸發,除非回調與end()destroy()斷開重新連接。

+0

但我得到錯誤「此套接字已被對方終止」,我使用命令netstat -anp | grep 9092,我看不到端口9092綁定到任何協議。 9092是我的卡夫卡港口。 「由對方結束」的 – user84592

+1

聽起來不像發起人的超時。這聽起來像是連接在另一端關閉了。 – Trott

+0

那麼你的意思是Kafka結束連接?在我的情況下,系統閒置超過5小時或10小時。由於沒有消息推送到隊列,Kafka可以結束連接嗎?所以我會在_socket.on中添加一些東西('close',function(){0}; //console.log('socket close'); }); – user84592

相關問題