Node.js连接会话

时间:2010-11-04 13:10:41

标签: node.js

我有一个node.js服务器,它几乎运行子进程,并通过套接字将stdout从进程发送到连接的客户端。它工作正常,但是当客户端断开连接时,由于var超出了范围,我无法关闭子进程。这是我的示例代码

var sys = require('sys'),
        ws = require('./ws');



var server = ws.createServer(function (socket) {
        socket.addListener("connect", function (resource) {
                var counter = 0;

                sys.puts("client connected from " + resource);

                var spawn = require('child_process').spawn, tail = spawn('app');
                sys.puts("Spawned child pid: "+ tail.pid);

                tail.stdout.addListener('data', function(data) {
                     socket.write(JSON.stringify(data));
                });

        })

        socket.addListener("close", function () {
                //
                // need to access the tail var here!!!
                //


                sys.puts("quit");
        })
})

server.listen(3656)

在我的密切监听器中,我需要访问tail变量,以便我可以杀死进程。

1 个答案:

答案 0 :(得分:4)

tail声明向上移动一级,从onConnect移至createServer,因为它仍然是同一个实例:

ws.createServer(function(socket){
    var tail;
    socket.addListener("connect", function(resource){
        tail = spawn("app");
        ...
    });
    socket.addListener("close", function(){
        if(tail)
            tail = null;
    });
});