Esta puede ser una pregunta muy básica, pero simplemente no la entiendo. ¿Cuál es la diferencia entre crear una aplicación usando Express.js y comenzar a escuchar la aplicación en el puerto 1234, por ejemplo:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
y agregando un 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);
¿Cual es la diferencia?
Si navego hasta http://localhost:1234
, obtengo el mismo resultado.
Respuestas:
La segunda forma (crear un servidor HTTP usted mismo, en lugar de hacer que Express cree uno para usted) es útil si desea reutilizar el servidor HTTP, por ejemplo, para ejecutar
socket.io
dentro de la misma instancia del servidor HTTP:Sin embargo,
app.listen()
también devuelve la instancia del servidor HTTP, por lo que con un poco de reescritura puede lograr algo similar sin crear un servidor HTTP usted mismo:fuente
===
comparación literal fallaría;) Si no me crees, siempre existe la fuente .var socketio = require('socket.io')
en la tercera línea necesaria en su reescritura?app.listen()
porque requiere menos código. Como solo es una capa muy delgadaserver.listen()
y devuelve la instancia del servidor, generalmente no hay razón para crear una instancia de servidor HTTP por separado de forma manual.Hay una diferencia más de usar la aplicación y escuchar el servidor http es cuando desea configurar el servidor https
Para configurar https, necesita el siguiente código:
La aplicación de express solo devolverá el servidor http, no puede configurarla en express, por lo que deberá usar el comando https server
fuente
Solo por puntualidad y extender un poco la respuesta de Tim.
De la documentación oficial :
fuente
express/lib/appplication.js
y nada más que un atajo para crear el servidor http del nodo.Vine con la misma pregunta pero después de google, descubrí que no hay una gran diferencia :)
De Github
Si desea crear un servidor HTTP y HTTPS, puede hacerlo con los módulos "http" y "https" como se muestra aquí.
Además, si desea trabajar con socket.io, vea su ejemplo
Ver esto
Yo prefiero
app.listen()
:)fuente
Express es básicamente un contenedor de módulo http que se crea para la facilidad de los desarrolladores de tal manera que ...
fuente