我正在使用此代码创建一个侦听特定端口和ip
的服务器function notifier() {
var net = require('net');
var host = 'x.x.x.x';
var port = xxxx;
var server = net.createServer(function (socket) {
socket.on('data', function (data) {
console.log("data " + data.toString());
});
socket.on('close', function (data) {
console.log('closed');
});
socket.on('error', function (err) {
console.log(err);
});
});
function startServer() {
server.listen(port, host, function () {
console.log('started');
});
}
function stopServer() {
server.close(function () {
console.log('stopped');
});
}
startServer();
}
我还创建了一个startServer和stopServer函数。
如果我调用函数通知器()然后服务器启动但我无法弄清楚如何在函数通知器()之外调用stopServer函数
也许我在这里犯了一个大错,而且我不能在其他地方称它,那么也许有人可以指出我应该如何做正确的方向。
答案 0 :(得分:1)
JavaScript函数中的Sincé是第一类,你可以返回stopServer从其他地方调用它。
function notifier(){
function stopServer(){
....
}
return stopServer; // note that we do not call the function, just return it
}
var x = notifier();
x(); // calls stopServer
答案 1 :(得分:1)
你可以使用'notifier()'函数作为工厂方法并返回一个接口对象来与服务器实例通信,就像这样...
function notifier() {
var net = require('net');
var host = 'x.x.x.x';
var port = xxxx;
var server = net.createServer(function (socket) {
// ... omitted for brevity
});
return {
startServer() {
server.listen(port, host, function () {
console.log('started');
});
},
stopServer() {
server.close(function () {
console.log('stopped');
});
}
}
}
let server = notifier();
server.startServer();
server.stopServer();