0
聲明:我對Node.js和Socket.io完全陌生,這更像是一個Javascript /一般編程問題,而不是Node.js的特定問題,但是因爲它是用Node.js編寫,我不得不在這裏發佈。在socket.io中處理回調的正確方法
我有這樣
configs.socket.on('device_pair_authorization', function(device, callback) {
var pair_token = device.pair_token;
var server_signature = device.server_signature;
if(pair_token && server_signature) {
var decipher = crypto.createDecipher('aes-256-cbc', 'SOME_KEY');
var decryptedSignature = decipher.update(server_signature, 'base64', 'utf8');
decryptedSignature = decryptedSignature + decipher.final('utf8');
deSigJSON = JSON.parse(decryptedSignature);
if(deSigJSON.user_id && deSigJSON.pair_token) {
if(deSigJSON.pair_token === pair_token) {
var server_handshake_token = deSigJSON.server_token;
if(server_handshake_token) {
//VALIDATED
var one_time_access_token = crypto.createHash('sha512').update([Math.random(), server_handshake_token, new Date()].join()).digest('base64');
var expires = new Date().getTime() + 60;
callback({
is_authorized: true,
one_time_access_token: one_time_access_token
});
}
callback({
is_authorized: false,
error: "Server Token Is Missing"
});
}
callback({
is_authorized: false,
error: "Pair Token is Incorrect"
});
}
callback({
is_authorized: false,
error: "Signature is corrupted"
});
}
callback({
is_authorized: false,
error: "Pair_Token or Server_Signature is missing"
});
});
功能的整體思路是,該功能是授權功能,防止欺詐行爲,每一個步驟分別檢查,如果出現錯誤的檢查中間,回調會執行一個特定的錯誤消息,並且is_authorized = false。如果一切順利,回調將執行is_authorized = true併發回令牌。
我的問題是,代碼看起來並不整齊,我確信有一種方法來修改此代碼,以便回調不會被多次寫入,但我不知道爲什麼。
我想以更專業的方式重新編寫代碼。有什麼建議麼?