Tema: Real Time
Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/12/2011, 01:05
Avatar de dual3nigma
dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Respuesta: Real Time

Hola!!!! Gracias por comentar y disculpen la demora.

Nooooooo, no querras correr node.js sobre apache, me imagino que lo ven algo así como mode_wsgi para python, pero no, apache es cosa del pasado fue pensado con otro tipo de aplicaciones en mente. "Ya nadie va a usar apache"

Veran les explico un poco de como debe de funcionar este tema de los puertos. Con node.js se busca aplicaciones que puedan responder millones de requests. Esto se conoce como "load balancing" para lograr esto la solución común es correr varios procesos de la aplicación en lo cual node.js es muy generso debido a la poca cantidad de recursos que consume.

Supongamos que tengo mi aplicación en server.js, para correrla haré: node server.js. Este servidor lo pondré en el puerto 3000 por ejemplo de modo que corra en http://localhost:3000 en mi servidor esta dirección no estará accesible a todos sino solo local, lo que necesito ahora es una herramienta como nginx que me escuche las peticiones en el puerto 80 y las routee a mi aplicación en puerto 3000, por que no puse a mi servidor a correr en el puerto 80? por que este routeador se encargara de que cuando mi servidor en el puerto 3000 no pueda mas, habrá otra instancia, ósea otro node server.js pero esta vez corriendo en 3001 por ejemplo para así tener una aplicación con "high availability" o "scaling"

Queda mas claro? Servicios como heroku hacen todo este proceso muy fácil al ser solo necesario indicar scale=2 o scale=3, o así es en Google App Engine, no creo que ahí es instances: 2, pero bueno, el punto es que eso es lo que te facilitan esos servicios.

Ahora el tema de los WebSockets no hay que confundirlo, eso es otra cosa. No puedes abrir un websocket desde la barra de tu navegador, no funciona de esa forma. A ver, vamonos a lo básico, cuando escribes una dirección en la barra de tu navegador por ejemplo www.forosdelweb.com estas haciendo una solicitud http al servidor en el puerto 80, puedes indicar otro puerto, pero no otro protocolo, las paginas web se sirven mediante el protocolo http, es la forma que es. Y puedes tener un servidor node.js escuchando tales solicitudes en el puerto que quieras para servir una pagina web.

Otro cantar seria si fueran websockets, ese es otro protocolo. Si me pongo técnico, bueno en realidad WebSockets utiliza HTTP un poco, ya que se manda una solicitud http upgrade, para cambiar de protocolo.... y en este caso tu servidor node.js debe estar escuchando igual esta clase de solicitudes en el puerto que quieras.

Queda mas claro? o peor xD

Saludos!!!