Tam*_*mas 378 node.js express server
这可能是一个非常基本的问题,但我根本就没有得到它.使用Express.js创建应用程序和启动应用程序侦听端口1234 之间的区别是什么,例如:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
Run Code Online (Sandbox Code Playgroud)
并添加一个http服务器:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
//app.configure, app.use etc
server.listen(1234);
Run Code Online (Sandbox Code Playgroud)
有什么不同?
如果我导航到http://localhost:1234,那么我得到相同的输出.
rob*_*lep 510
如果要重用HTTP服务器(例如socket.io在同一HTTP服务器实例中运行),第二种形式(自己创建HTTP服务器,而不是让Express为您创建一个)非常有用:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
...
server.listen(1234);
Run Code Online (Sandbox Code Playgroud)
但是,app.listen()也返回HTTP服务器实例,因此通过一些重写,您可以实现类似的功能,而无需自己创建HTTP服务器:
var express = require('express');
var app = express();
// app.use/routes/etc...
var server = app.listen(3033);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
...
});
Run Code Online (Sandbox Code Playgroud)
Tim*_*Tim 54
当您要为https服务器设置时,使用应用程序和监听http服务器的另一个区别
要设置https,您需要以下代码:
var https = require('https');
var server = https.createServer(app).listen(config.port, function() {
console.log('Https App started');
});
Run Code Online (Sandbox Code Playgroud)
来自express的app只会返回http服务器,你不能在express中设置它,所以你需要使用https服务器命令
var express = require('express');
var app = express();
app.listen(1234);
Run Code Online (Sandbox Code Playgroud)
Iva*_*aev 23
只是为了准时的目的,并延长一点蒂姆答案.
从官方文件:
express()返回的应用程序实际上是一个JavaScript函数, 设计为通过Node的HTTP服务器作为处理请求的回调.
这样可以轻松地为应用程序的HTTP和HTTPS版本提供相同的代码库,因为应用程序不会从这些版本继承(它只是一个回调):
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
Run Code Online (Sandbox Code Playgroud)
所述app.listen()方法返回一个http.Server对象和(对于HTTP)是一个方便的方法为以下内容:
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
Express基本上是http模块的包装器,它是为了方便开发人员而创建的.
我遇到了同样的问题,但是在谷歌之后,我发现并没有太大的区别:)
如果您希望同时创建HTTP和HTTPS服务器,则可以使用“ http”和“ https”模块来创建,如下所示。
/**
* Listen for connections.
*
* A node `http.Server` is returned, with this
* application (which is a `Function`) as its
* callback. If you wish to create both an HTTP
* and HTTPS server you may do so with the "http"
* and "https" modules as shown here:
*
* var http = require('http')
* , https = require('https')
* , express = require('express')
* , app = express();
*
* http.createServer(app).listen(80);
* https.createServer({ ... }, app).listen(443);
*
* @return {http.Server}
* @api public
*/
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
另外,如果您想使用socket.io,请参见他们的示例
看到这个
我更喜欢app.listen():)
| 归档时间: |
|
| 查看次数: |
110139 次 |
| 最近记录: |