0

我有一个非常基本的 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 之前如何等待数据完成?

4

1 回答 1

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

于 2013-09-02T12:34:35.013 回答