首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何了解node.js express server何时启动并可供使用

如何了解node.js express server何时启动并可供使用
EN

Stack Overflow用户
提问于 2013-08-15 04:19:22
回答 5查看 32.6K关注 0票数 28

我有一个应用程序,我想在其中启动一个node express服务器,然后一旦服务器启动,就在同一台机器上自动启动浏览器。如何查询服务器是否已启动并准备就绪?我真的希望在.listen调用上有某种回调,但似乎没有。我可以等待比我预期的时间更长的时间,但是这是在现场的设备上进行的,所以在启动浏览器之前,我必须等待一段荒谬的时间来确保我已经启动并运行,或者让用户足够聪明地在页面加载不正确的情况下点击刷新。对我来说,这两个都不是好的选择。。。

我在网上阅读了API,但没有看到类似这样的东西。当然,有一个我不知道的技巧可以做到这一点。

如果节点HTTP api (它有一个回调并告诉我侦听事件)是express对象的基础,那么可能有一个没有文档记录的express call listen的回调选项。或者我应该知道它就在那里。

任何帮助都将不胜感激。

EN

回答 5

Stack Overflow用户

发布于 2013-08-15 04:28:56

您可以使用http.listen方法,该方法有一个回调函数,在服务器准备就绪时触发:

代码语言:javascript
复制
http.createServer(app).listen(app.get('port'), function () {
    console.log('Printed when ready!!!');
});

请参阅Node.js上的官方参考:

http://nodejs.org/api/all.html#all_server_listen_port_hostname_backlog_callback

http://nodejs.org/api/all.html#all_server_listen_path_callback_1

http://nodejs.org/api/all.html#all_server_listen_handle_callback_1

票数 7
EN

Stack Overflow用户

发布于 2013-08-15 04:35:48

正如许多人提到的,listen函数(在express应用程序或http服务器上,两者都支持它)确实支持回调,这将让您的节点进程知道它何时正在侦听。

因此,如果你计划在express应用程序中启动浏览器,那么在那里就可以了。但是,如果您从外部脚本启动express应用程序,然后希望该外部脚本打开浏览器,那么节点回调并不会真正为您带来任何好处。

在stdout上等待一些神奇的字符串并不是仅仅等待一个好的HTTP响应的真正改进。在获得成功响应之前,您也可以对curl使用try/backoff/timeout循环。

票数 6
EN

Stack Overflow用户

发布于 2016-01-19 17:12:21

您可以在服务器启动后触发自定义事件:

代码语言:javascript
复制
// server.js
const express = require('express');
const app = express();

modeule.export = app;
app.listen(3000, () => {
   app.emit('listened', null)
});

在一个单独的模块中,应用程序可以监听您的自定义事件:

代码语言:javascript
复制
// custom.js
const server = require('server.js');
server.on('listened', function() {
  console.log('The server is running!');
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18241494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档