【问题标题】:How do i confirm that my http-server was closed properly?如何确认我的 http-server 已正确关闭?
【发布时间】:2017-03-22 07:52:51
【问题描述】:

我正在创建一个 expressjs 应用程序,为了测试我“承诺”我的服务器启动:

startHttpServer(): Promise<any> {
    let self = this;
    return new Promise(function(resolve, reject) {
        logInfo('Starting http server...');
        self.httpServer = self.app.listen(self.options.port, () => {
            logInfo('Listening on port %O', self.options.port);
            resolve();
        }).on('error', () => {
            logError('Failed to start the server on port %O', self.options.port);
            reject();
        });
    });
}

我如何“承诺”我的连接关闭?

【问题讨论】:

    标签: node.js express typescript


    【解决方案1】:

    我如何“承诺”我的连接关闭?

    您可以在从listen返回的底层http服务器上监听close事件:https://nodejs.org/api/http.html#http_event_close

    更多

    注意:promise 只能被解决或拒绝一次,因此您不应再在收听时resolve

    如果你想同时通知 listen 和 close 而其他人使用 observable 代替。

    【讨论】:

    • .listen() 回调只被调用一次,因此它与 promise 完美配合。据推测,close 事件也是如此。 Promise 适用于只发生一次的事件。
    • 节点集群不是这样。可以多次调用 Listen。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2017-03-29
    • 2019-07-20
    • 2019-04-12
    相关资源
    最近更新 更多