如果客戶端發送JSON,則我的TCP套接字數據處理程序在try塊中正常工作。但是,我也想通過telnet支持一些基本的「終端命令」,所以如果解析器失敗,catch塊應該嘗試識別支持的,但我總是得到默認響應SyntaxError ...爲什麼在我的捕獲工作中不是這種情況?
socket.on('data', function(data){
try{
var json = JSON.parse(data);
switch(json.event){
default:
console.log('unhandled event:'+json.event);
break;
}
}catch(err){
console.log("CLIENT SAID: "+data);
switch(data){
case "echo":
socket.write("ECHO:"+data+"\n");
break;
case "clients":
socket.write("CLIENTS:"+clients.length+"\n");
break;
default:
socket.write('ERROR:'+err+"\n");
break;
}
}
});
而不是'console.log(「...」+ data)',嘗試'console.log(data)'看'data'是否實際上是一個字符串。 – Passerby
當你說你得到「語法錯誤」響應時,你是什麼意思?你從哪裏得到的?它從何而來? – Pointy
@Passerby - 有趣的是,它記錄<緩衝區68 65 79 0d 0a> –