2010-11-20 16 views
6

¿Es posible construir un servidor web micro (prueba de concepto) en Javascript?servidor web Javascript?

¿Alguien ha hecho esto antes?


EDIT: se necesita una aclaración Al parecer explícita aquí. La pregunta es, finalmente, sobre cómo enviar los datos del servidor al navegador después de que se haya cerrado la solicitud inicial hecha por el navegador. En otras palabras, cómo hacer que el navegador acepte solicitudes posteriores iniciadas por un servidor.

¿Se necesita instalar un servidor web basado en javascript en el navegador, o hay algún otro método?

+2

para aclarar, el motivo de mi pregunta es ser capaz de poner en práctica una especie de '' mecanismo de devolución de llamada del hombre pobre a través de HTTP. en otras palabras , Quiero poder ejecutar el servidor web en el navegador del cliente, de modo que un servidor remoto pueda enviar datos al (servidor incorporado) en el navegador del cliente. Suena confuso, pero lleno de esperanza y, entiendes mi punto ... – skyeagle

+0

Tal vez deberías buscar "sockets web" en google, pero no creo que puedas implementar una arquitectura como la que describes. – Pointy

+2

Node.js se ejecuta en el servidor (como sugiere el nombre _web-server_). – jwueller

Respuesta

3

Si usted está diciendo que usted quiere ser capaz de enviar datos a los navegadores que han iniciado el contacto con su servidor, lo haría una investigación sobre Servidores Comet

No sé nada al respecto, por lo que solo le daré un par de enlaces que con suerte lo orientarán en la dirección correcta.

From Wikipedia Comet_(programming)

cometa es un modelo de aplicación web en la que una solicitud HTTP desde hace mucho tiempo permite que un servidor web para enviar datos a un navegador, sin que el navegador solicita explícitamente. 1 Comet es un término general que abarca múltiples técnicas para lograr esta interacción. Todos estos métodos se basan en funciones incluidas de forma predeterminada en navegadores, como JavaScript, en lugar de en complementos no predeterminados. El enfoque de Comet difiere del modelo original de la web, en el que un navegador solicita una página web completa a la vez. [3]

Aquí hay algo llamado APE. No sé nada al respecto, pero puede que te sea útil.

From the APE site:

APE es una solución completa herramienta Open Source diseñada para Ajax Push. Incluye un servidor de cometas y un Marco de JavaScript. APE permite implementar cualquier tipo de transmisión de datos en tiempo real a un navegador web, sin tener que instalar nada en el lado del cliente.

+1

¡ESO de lo que estoy hablando !. Me ahorra tener que reinventar la rueda – skyeagle

+1

tal vez la pregunta es mal marco pero no entiendo en absoluto qué tiene que ver esto con un servidor web JS ?? ¡La respuesta de Pointy es buena, sin embargo! – oberhamsi

+3

@oberhamsi: ¿Entonces me has votado? Resulta que esto era * exactamente * lo que OP quería. Tómese el tiempo para leer el comentario anterior suyo. Es de OP que indica que respondió la pregunta. La razón por la que dejé esta respuesta fue porque hice lo que obviamente no tomaste el tiempo para hacer. Leí el diálogo en los otros comentarios y deduje que esto era lo que OP necesitaba, pero no sabía cómo expresarlo. Si haces lo mismo, verás que OP quería * originar * solicitudes del servidor al navegador, lo cual solo tiene sentido si el navegador realizó una solicitud inicial. Bueno, al menos has comentado. – user113716

15

Mira el proyecto RingoJS o Node.js. La respuesta es "sí", y no solo "micro" o "prueba de concepto".

RingoJS

Node.js

express.js framework for node

+1

Vame a través de nodeJS hace un par de días. No tengo claro si el código escrito usando node.js puede ejecutarse en un navegador (que es lo que intento hacer). ¿Puedes confirmar si un servidor web escrito usando node.js se puede ejecutar en un navegador común? – skyeagle

+1

@skyeagle: ¿Qué quiere decir con _ "ejecutar en un navegador" _? – jwueller

+3

No, node.js es una tecnología ** del lado del servidor **. Está basado en Javascript, por lo que * código * podría ser común entre el navegador y el servidor, pero no se puede implementar un servidor en un navegador por muchas razones. – Pointy

1

Hay un add-on para Firefox (también disponible como una aplicación de escritorio separada) llamado Plain Old Webserver. Se supone que es capaz de ejecutar un tipo especial de JavaScript del lado del servidor que tiene acceso a todas las funciones internas del navegador, incluidos el acceso a bases de datos y archivos locales, el acceso a las preferencias e historial del navegador y cualquier otra cosa que se pueda hacer con un complemento de Firefox.

0

JS HTTPD

http://acme.com/software/js_httpd/

Es un pequeño servidor HTTP UNIX escrito en JavaScript.

Se ejecuta desde inetd, lo que significa que su rendimiento es pobre. Pero para sitios de poco tráfico, es bastante adecuado. Implementa todas las características básicas de un servidor HTTP, incluyendo:

  • Seguridad contra ".." nombre de archivo snooping.
  • Los tipos MIME comunes.
  • Redirección de barra inclinada.
  • index.html
  • Listados de directorios.

js_httpd también se puede utilizar para servir HTTPS envolviéndolo con stunnel. Las instrucciones están incluidas.

Otros servidores web pequeños y/o extrañas (todos corren desde inetd):.

http://acme.com/software/js_httpd/

+0

El título de este Q y A debe ser cambiado para reflejar que Javascript a servidores web no se les pide :) Estaba demasiado iba a informar acerca de un servidor web javascript que puede ser utilizado para las pruebas unitarias o lo que sea: https: //developer.mozilla .org/es-ES/docs/Httpd.js/HTTP_server_for_unit_tests – Motin

0

Usted podría intentar "ewsjs es un servidor Web incorporado dentro de su navegador Al desarrollar Ajax y basado en una sola página-aplicaciones, a menudo es muy difícil probar estas aplicaciones hasta que haya un servidor web. (...)

EWS proporciona un servidor web incorporado que mira a su aplicación Ajax como si proviniera del servidor . Puedes poner en cualquier lógica y probar completamente tu aplicación Ajax dentro del navegador, sin runni ng un servidor.

EWS admite varias características clave: Registro de manejadores para cualquier ruta, Registro de manejadores para rutas parametrizadas (como rutas Sinatra), Registro de un manejador para automático (cuando no coincide con otro manejador), Reescritura de una ruta a otra (como en Apache o nginx), asíncrona (exactamente imitando verdaderas llamadas ajax)"

en https://github.com/deitch/ewsjs