从套接字块访问数据

时间:2017-02-20 09:21:19

标签: javascript node.js

我正在做客户端 - 服务器应用程序vie net模块。客户端向我发送数据,具体取决于我必须从服务器发回响应的数据类型。我是通过socket.on()方法做的。问题是当我从客户端接收数据时我将其转换为字符串以检查客户端发送了什么。根据它我设置数组,然后想以json形式传回客户端服务器。问题是当我在块中设置数组时,其中的数据是不可用的。它显示我的空数组.Below是我的代码片段:

  var server = net.createServer(
function(socket){
    console.log("Client connection...");

    socket.on('end', function(){
        console.log("Client disconnected...");
    });

    // process data from client
    socket.on('data', function(data){
        //console.log(" Received:", data.toString());
        a=data.toString();
        //console.log(a);
        if(a=="lookupByLastName('Smith')") 
        {
            arr= employees.lookupByLastName('Smith');
            flag=true;
            console.log("hey" +arr.length);
        }

        console.log("check1:"+arr.length+":"+flag); // here array has data

    });

    console.log("check2:"+arr.length+":"+flag); // array length has no data
    // send data to client
    socket.write("Data"+JSON.stringify(arr); ); // arr contains no data

});

1 个答案:

答案 0 :(得分:0)

问题是你在初始化时调用socket.write,即可能没有收到数据。获取数据后,您应该致电socket.write。请参阅以下修改后的代码:

var server = net.createServer(
function(socket){
    console.log("Client connection...");

    socket.on('end', function(){
        console.log("Client disconnected...");
    });

    // process data from client
    socket.on('data', function(data){
        //console.log(" Received:", data.toString());
        a=data.toString();
        //console.log(a);
        if(a=="lookupByLastName('Smith')") 
        {
            arr= employees.lookupByLastName('Smith');
            flag=true;
            console.log("hey" +arr.length);

            socket.write("Data"+JSON.stringify(arr); ); // Here the array will have the data
        }

        console.log("check1:"+arr.length+":"+flag); // here array has data
    });

});