通过node.js套接字发送文本JSON如何处理'\n\r';辛波尔斯
我有客户端-服务器应用程序,服务器端在Node.js上,客户端在flash上,通过socket相互通信。我将字符串化JSON写入套接字,并在服务器上读取数据:通过node.js套接字发送文本JSON如何处理'\n\r';辛波尔斯,json,node.js,sockets,Json,Node.js,Sockets,我有客户端-服务器应用程序,服务器端在Node.js上,客户端在flash上,通过socket相互通信。我将字符串化JSON写入套接字,并在服务器上读取数据: socket.on('data', function(data) { console.log(JSON.parse(data.toString()); var json = JSON.parse(data.toString()) }); 一切正常,直到我开始向服务器发送包含“\n\r”的长文本消息
socket.on('data', function(data) {
console.log(JSON.parse(data.toString());
var json = JSON.parse(data.toString()) });
一切正常,直到我开始向服务器发送包含“\n\r”的长文本消息的JSON。在这一点上,我得到了一个错误:
SyntaxError:输入意外结束
因为“\n\r”表示包的结尾。从文本中删除“\n\r”不是好方法,因为我需要它来正确显示文本。请给我最好的办法来处理那个问题。提前感谢。使用
JSON.stringify(data)
而不是.toString()
一个简单的方法是尝试解析,如果没有,则等待更多数据:
var json = '';
socket.on('data', function(data) {
try {
json = JSON.parse(data);
} catch (e) {
json += data;
try {
json = JSON.parse(json);
// Now it's fine.
} catch (e) {
// Wait for more.
return;
}
}
// Now it's fine.
// At the end do;
json = '';
});
非常感谢,我认为这是最简单和最好的方法,即使有几个'\n\r'也可以很好地工作。