Essa pode ser uma pergunta muito básica, mas eu simplesmente não entendo. Qual é a diferença entre criar um aplicativo usando o Express.js e iniciar o aplicativo escutando na porta 1234, por exemplo:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
e adicionando um servidor 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);
Qual é a diferença?
Se eu navegar para http://localhost:1234
, então recebo a mesma saída.
Respostas:
O segundo formulário (criando você mesmo um servidor HTTP, em vez de fazer com que o Express crie um para você) é útil se você deseja reutilizar o servidor HTTP, por exemplo, para executar
socket.io
na mesma instância do servidor HTTP:No entanto,
app.listen()
também retorna a instância do servidor HTTP, portanto, com um pouco de reescrita, você pode obter algo semelhante sem criar um servidor HTTP:fonte
===
comparação literal falharia;) Se você não acredita em mim, sempre existe a fonte .var socketio = require('socket.io')
na terceira linha necessária em sua reescrita?app.listen()
porque requer menos código. Como é apenas uma camada muito finaserver.listen()
e retorna a instância do servidor, geralmente não há motivo para criar manualmente uma instância separada do servidor HTTP.Há mais uma diferença de usar o aplicativo e ouvir o servidor http é quando você deseja configurar o servidor https
Para configurar para https, você precisa do código abaixo:
O aplicativo do express retornará apenas o servidor http; você não pode configurá-lo no express; portanto, será necessário usar o comando https server
fonte
Apenas para fins de pontualidade e estenda um pouco a resposta de Tim.
Da documentação oficial :
fonte
express/lib/appplication.js
e nada mais que um atalho para criar o servidor http do nó.Eu vim com a mesma pergunta, mas depois do google, descobri que não há grande diferença :)
Do Github
Se você deseja criar um servidor HTTP e HTTPS, faça isso com os módulos "http" e "https", como mostrado aqui.
Além disso, se você quiser trabalhar com o socket.io, veja o exemplo deles.
Veja isto
Eu prefiro
app.listen()
:)fonte
Express é basicamente um invólucro do módulo http criado para facilitar os desenvolvedores de tal maneira que ..
fonte