SyntaxError:意外的输入结束(nodejs-tcp服务器)

SyntaxError: Unexpected end of input (nodejs tcp server)

本文关键字:nodejs-tcp 服务器 结束 输入 意外 SyntaxError      更新时间:2023-09-26

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

您可以等待发出end事件,然后解析它。

示例

// 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