Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过node.js套接字发送文本JSON如何处理'\n\r';辛波尔斯_Json_Node.js_Sockets - Fatal编程技术网

通过node.js套接字发送文本JSON如何处理'\n\r';辛波尔斯

通过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”的长文本消息

我有客户端-服务器应用程序,服务器端在Node.js上,客户端在flash上,通过socket相互通信。我将字符串化JSON写入套接字,并在服务器上读取数据:

    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'也可以很好地工作。