节点重启UDP服务器

时间:2014-05-24 10:47:36

标签: node.js udp

我正在创建一个用于接收消息并快速发送响应的udp服务器。

但是,我发现自己遇到了问题:服务器一旦得到答复就无法关闭与客户端的连接。

所以,为了避免服务器饱和,我想到了一种方法来重启服务器udp(一种重新绑定),一旦计数器达到一定数量,但我找不到关闭服务器的解决方案udp并重新启动它。

有办法做到这一点吗?

这是我目前所拥有的代码段示例:

/** Udp server */
var reset = function() {
    if(count > 3) {
        server.close();
        count = 0;
        console.log('reset');
        server.bind('4002');
    }
    return true;
};
var count = 0;
var server = require("dgram").createSocket("udp4");
server.on("message", function(message, requestInfo) {
        count++;
        message = message.toString();
        if(message == null || message === '') {
            reset();
            return;
        }
        // do something with the received message and sends the reply ..
        var response = new Buffer(result.toString());
        server.send(response, 0, response.length, requestInfo.port, requestInfo.address);
        reset();
    }
);
server.on("error", function(error) {
    console.log(error);
    server.close();
});
server.on("listening", function() {
    var address = server.address();
    console.log("server listening " + address.address + ":" + address.port);
});

server.bind('4002');

这是堆栈跟踪:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: Not running
at Socket._healthCheck (dgram.js:420:11)
at Socket.bind (dgram.js:160:8)
...

0 个答案:

没有答案