我有一个非常基本的tcp服务器,可以发送和接收json数据。
请参阅我的代码:
// 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);
}
});
问题似乎是有时数据不完整而且会出错:
SyntaxError:意外的输入结束
在解析json之前,我怎样才能在数据完成之前等待?
答案 0 :(得分: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);
}
});