2013-08-31 68 views
0

我有一個非常基本的tcp服務器,可以發送和接收json數據。SyntaxError:意外的輸入結束(nodejs tcp服務器)

見我的代碼:

// Handle incoming messages from clients. 
    socket.on('data', function (data) { 

    var obj = JSON.parse(data); 

    if(obj.type == "register") { 
     _clientObj[obj.msg] = { 
      client: 'Client', 
      socketID: socket.name 
     } 


     console.log("Register...");  

    } else if(obj.type == "message") { 


     console.log(socket.name + " --> message: " + obj.msg); 
    } 

    }); 

的問題似乎是,有時候數據是不完整的,它trows錯誤:

SyntaxError: Unexpected end of input

我怎麼能數據之前等待我解析之前完成出json?

回答

3

您可以等待發出結束事件,然後解析它。

// Handle incoming messages from clients. 
data = ''; 
socket.on('data', function (chunk) { 
    data += chunk; 
}); 

// Handle incoming messages from clients. 
socket.on('end', function() { 
    var obj = JSON.parse(data); 

    if(obj.type == "register") { 
     _clientObj[obj.msg] = { 
      client: 'Client', 
      socketID: socket.name 
     } 

    console.log("Register..."); 

    } else if(obj.type == "message") { 
     console.log(socket.name + " --> message: " + obj.msg); 
    } 
}); 

文檔http://nodejs.org/api/all.html#all_event_end_1

相關問題