http.createServer (aplicación) v. http.Server (aplicación)

En la página web socket.io,Get Started: Chat application, ubicado aquí:

http://socket.io/get-started/chat/

hay este código:

var app = require('express')();
var http = require('http').Server(app);

que podría reescribirse un poco más claramente así:

var express = require('express');
var http = require('http');

var app = express();
var server = http.Server(app);

El ejemplo de socket.io usa http.Server () para crear un servidor. Sin embargo, los documentos express paraapp.listen () muestra un ejemplo donde el servidor se crea usandohttp.createServer(app):

app.listen ()
Enlace y escuche las conexiones en el host y el puerto dados. Este método es idéntico al http.Server # listen () del nodo.

var express = require('express');  
var app = express();  
app.listen(3000);

La aplicación devuelta por express () es, de hecho, una función de JavaScript, diseñada para pasar a los servidores HTTP del nodo como una devolución de llamada para manejar las solicitudes. Esto le permite proporcionar fácilmente las versiones HTTP y HTTPS de su aplicación con la misma base de código, ya que la aplicación no hereda de estas (es simplemente una devolución de llamada):

var express = require('express');
var https = require('https');
var http = require('http');
var app = express();

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

El método app.listen () es un método conveniente para lo siguiente (si desea utilizar HTTPS o proporcionar ambos, utilice la técnica anterior):

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

Cuál es la diferencia entrehttp.createServer(app) yhttp.Server(app)?? Los documentos http no son de ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta