我幾乎可以肯定我不明白TCP服務器的基本概念,並且我沒有將數據視爲流,更糟糕的是,我可能不會使用事件非常好。在NodeJS的TCP服務器上實現簡單身份驗證
我希望tcp服務器寫入套接字'username:',這樣你就可以輸入你的用戶名(在像netcat或telnet這樣的tcp客戶端上),然後tcp服務器必須把下一個數據作爲用戶名。到目前爲止,它確實有效(儘管我幾乎可以肯定有更好的方法可以做到這一點),接下來它應該寫入'password:',這樣你可以輸入你的密碼,如果它是正確的,它應該驗證證書和做更多的東西......但是,什麼情況是,當你鍵入密碼,將其寫入再次「密碼:」因爲socket.write('password: ');
是自身內部的另一個socket.on('data',function(){//etc});
下面的代碼我到目前爲止:
var net = require('net');
var server = net.createServer(function (socket) {
socket.addListener("connect", function() {
socket.write('username: ');
socket.on('data',function(data){
var username = data.toString().replace('\n','');
socket.write('password: ');
socket.on('data',function(data){
var password = data.toString().replace('\n','');
// verify authentication here
// Do more stuff
});
});
});
});
server.listen('8000','localhost');
什麼是正確的實現方式?我只是實現這一點,因爲我需要接收上傳(流),可能沒有結局,並不一次全部來。我試圖用TCP服務器解決這個問題真的很愚蠢嗎?
在此先感謝。
只是一個簡單的答案:嘗試.once或.one而不是on,它應該只觸發一次回調。給出的答案也是正確的,也是一個更完整的解決方案。 –