我正在创建一个用于接收消息并快速发送响应的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)
...