我希望程序停止侦听请求,并在成功加载页面一次后继续执行代码。我试过放一个 break;
在函数的代码末尾,但它表示这是非法中断。我不知道我应该用什么来代替休息。
我应该如何使它退出函数?
提前谢谢。
我将此站点中的以下代码用于node.js:
var http = require("http");
var port = 3000;
var serverUrl = "localhost";
var Kafka = require('no-kafka');
var connString = ' kafka://192.168.0.108:9092, 192.168.0.108:9092 '
var consumer = new Kafka.SimpleConsumer({ connectionString: connString });
var message = ["start"];
var server = http.createServer(function(req, res) {
console.log("Request: " + req.url);
var now = new Date();
var html = "<p>Hello World, the time is " + now + "- Messages: " + message + ".</p>";
res.end(html);
console.log("a");
server.close();
console.log("b");
});
// data handler function can return a Promise
var dataHandler = function (messageSet, topic, partition) {
messageSet.forEach(function (m) {
console.log('topic received: ');
console.log({
'topic':topic,
'partition': partition,
'offset': m.offset,
'message': m.message.value.toString('utf8')
});
message.push(m.message.value.toString('utf8'));
console.log("Listening at " + serverUrl + ":" + port);
server.listen(port, serverUrl);
console.log("c");
});
};
return consumer.init()
.then(function () {
return consumer.subscribe('temp', 0, dataHandler);
});
2条答案
按热度按时间k2fxgqgv1#
您可以通过调用
server.close()
.0g0grzrc2#
你没有退出一个函数(这将是
return
,不是break
),您告诉正在侦听端口的对象停止这样做。如果希望服务器停止侦听新连接,请使用
close
方法。请注意,服务器不会立即关闭。
http.Server#close
电话net.Server.close
,上面写着:停止服务器接受新连接并保留现有连接。此函数是异步的,当所有连接结束并且服务器发出
'close'
事件。可选的callback
一旦'close'
事件发生。与该事件不同的是,如果服务器关闭时未打开,则调用该事件时将使用错误作为其唯一参数。在我的快速本地测试中,这需要一段时间。如果您通过
'connection'
事件,并破坏连接并关闭服务器: