Express.js-app.listen vs server.posłuchaj.
To może być bardzo podstawowe pytanie, ale po prostu nie rozumiem. Jaka jest różnica między tworzeniem aplikacji przy użyciu Express.js i uruchamianie aplikacji nasłuchującej na porcie 1234, na przykład:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
I dodanie serwera 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);
Co za różnica?Jeśli przejdę do
http://localhost:1234
, otrzymam to samo wyjście. 5 answers
Drugi formularz (utworzenie serwera HTTP samodzielnie, zamiast tworzenia Express create one dla Ciebie) jest przydatny, jeśli chcesz ponownie użyć serwera HTTP, na przykład, aby uruchomić socket.io
w tej samej instancji serwera HTTP:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
...
server.listen(1234);
Jednak app.listen()
zwraca również instancję serwera HTTP, więc przy odrobinie przepisania można osiągnąć coś podobnego bez tworzenia serwera HTTP samemu:
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) {
...
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 06:59:22
Jest jeszcze jedna różnica w używaniu aplikacji i słuchaniu serwera http, gdy chcesz skonfigurować serwer https
Aby skonfigurować https, potrzebujesz poniższego kodu:
var https = require('https');
var server = https.createServer(app).listen(config.port, function() {
console.log('Https App started');
});
Aplikacja express zwróci tylko serwer http, nie można go ustawić w express, więc musisz użyć polecenia serwera https
var express = require('express');
var app = express();
app.listen(1234);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-02 00:41:05
Tylko w celu punktualności i wydłużenia trochę Tim answer.
Z oficjalnej dokumentacji :
Aplikacja zwracana przez express() jest w rzeczywistości funkcją JavaScript, zaprojektowany do przekazywania do serwerów HTTP węzła jako callback do obsługi prośby.
Ułatwia to dostarczanie zarówno wersji HTTP, jak i HTTPS aplikacji z tą samą bazą kodu, ponieważ aplikacja nie dziedziczy z tych (jest to po prostu wywołanie zwrotne):
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
Aplikacja .listen () metoda zwraca http.Server object and (for HTTP) jest metodą wygodną dla:
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 11:10:09
Przyszedłem z tym samym pytaniem, ale po google stwierdziłem, że nie ma dużej różnicy:)
From Github
Jeśli chcesz utworzyć serwer HTTP i HTTPS, możesz to zrobić za pomocą modułów "http" i "https", jak pokazano tutaj.
/**
* 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);
};
Również jeśli chcesz pracować z socket.io zobacz ich przykład
Zobacz to
Wolę app.listen()
:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-12 11:20:56
Express jest w zasadzie opakowaniem modułu http, który jest tworzony dla ułatwienia programistów w taki sposób, że..
- mogą skonfigurować middlewares do odpowiedzi na żądania HTTP (łatwo) za pomocą express.
- mogą dynamicznie renderować strony HTML na podstawie przekazywania argumentów do szablonów za pomocą express.
- mogą również łatwo zdefiniować routing za pomocą express.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 13:12:18