Bri*_*ian 21 javascript node.js express
有一个应用程序,我想启动节点快速服务器,然后在服务器启动后自动在同一台机器上启动浏览器.如何查询服务器是否已准备就绪?我真的希望在.listen调用上有某种回调,但似乎不是.我可以等待比我预期的时间更长的时间,但这将是在现场的设备,所以我要么等待一段荒谬的时间,以确保我启动并运行,然后开始浏览器或者让用户足够智能,如果页面加载不正确则点击刷新.这些都不是我的好选择...
我在线阅读API,但没有看到这样的内容.当然有一个我不知道的技巧可以做到这一点.
如果节点HTTP api(其具有回调并告诉我有关侦听事件)是快速对象的基础,则可能存在未记录的快速呼叫侦听的回调选项.或许我应该知道它就在那里.
任何帮助将不胜感激.
Tim*_*ple 32
新快报app.listen功能不支持回调.它将您传入的参数映射到http.listen调用.
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
所以你可以打电话: app.listen(port, callback);
或者你可以直接使用http.listen.
var app = require('express')(),
server = require('http').createServer(app);
server.listen(80, function() {
console.log('ready to go!');
});
Run Code Online (Sandbox Code Playgroud)
您可以使用http.listen具有回调函数的方法,该函数在服务器就绪后触发:
http.createServer(app).listen(app.get('port'), function () {
console.log('Printed when ready!!!');
});
Run Code Online (Sandbox Code Playgroud)
请参阅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
正如许多人所提到的,该listen函数(在快速应用程序或http服务器上都支持它)确实支持回调,这将使您的节点进程知道何时正在侦听.
因此,如果您打算从快递应用程序中启动浏览器,请在那里进行,并且您很好.但是,如果您从外部脚本启动Express应用程序,然后希望该外部脚本打开浏览器,则节点回调并不会真正为您带来任何收益.
在等待良好的HTTP响应时,在stdout上等待一些魔术字符串并不是真正的改进.您也可以使用try/backoff/timeout循环,curl直到获得成功的响应.
server.on('listening', function() {
resolve();//I added my own promise to help me await
});
Run Code Online (Sandbox Code Playgroud)
聆听活动对我很有效。注意我添加了我自己的 Promise。我想您可以通过向此侦听器添加入口点来获得类似的结果,而无需承诺。
请注意,我尝试了更直观的方法server.on('listen'),但它不起作用。运行节点6.9.1
您可以在服务器启动后触发自定义事件:
// server.js
const express = require('express');
const app = express();
modeule.export = app;
app.listen(3000, () => {
app.emit('listened', null)
});
Run Code Online (Sandbox Code Playgroud)
在单独的模块中,应用程序可以监听您的自定义事件:
// custom.js
const server = require('server.js');
server.on('listened', function() {
console.log('The server is running!');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24205 次 |
| 最近记录: |