2010-11-20 11 views
6

Czy możliwe jest zbudowanie serwera WWW w wersji mikro (proof of concept) w JavaScript?Serwer internetowy JavaScript?

Czy ktoś wcześniej to zrobił ?.


EDIT: tutaj konieczna jest Widocznie jednoznaczne wyjaśnienie. Ostatecznie chodzi o to, jak przesłać dane z serwera do przeglądarki po tym, jak pierwotne żądanie przeglądarki zostało zamknięte. Innymi słowy, jak sprawić, by przeglądarka akceptowała kolejne żądania zainicjowane przez serwer.

Czy serwer WWW oparty na javascript musi być zainstalowany w przeglądarce, czy jest jakaś inna metoda?

+2

aby wyjaśnić, powodem moje pytanie jest, aby być w stanie realizować swego rodzaju«biedaka»mechanizmu zwrotnego przez HTTP. W otherwords , Chcę móc uruchomić serwer WWW w przeglądarce klienta, aby zdalny serwer mógł wysyłać dane do (wbudowanego serwera) przeglądarki klienta. y, rozumiesz ... – skyeagle

+0

Być może powinieneś używać google do "gniazd internetowych", ale nie sądzę, że będziesz w stanie zaimplementować architekturę podobną do tego, co opisujesz. – Pointy

+2

Node.js działa na serwerze (jak sugeruje nazwa _web-server_). – jwueller

Odpowiedz

3

Jeśli mówisz, że chcesz być w stanie zapisywać dane do przeglądarek, które zostały zainicjowane kontakt z serwerem, chciałbym zrobić kilka badań na Serwery Comet.

Nie wiem nic na ten temat, więc po prostu podam kilka linków do ciebie, które, mam nadzieję, wskażą ci właściwy kierunek.

From Wikipedia Comet_(programming)

Comet to model aplikacji internetowych, w których wniosek długo trzymane HTTP pozwala serwerowi sieciowemu przesyłanie danych do przeglądarki, bez przeglądarka wyraźnie zwracając się do niej. 1 Kometa jest terminem parasolowym, obejmującym wiele technik umożliwiających osiągnięcie tej interakcji. Wszystkie te metody opierają się na funkcjach domyślnie używanych w przeglądarkach, takich jak JavaScript, a nie na niestandardowych wtyczkach. Podejście Comet różni się od pierwotnego modelu sieci, w którym przeglądarka żąda pełnej strony internetowej na raz. [3]

Oto coś, co nazywa się APE. Nie wiem nic na ten temat, ale może ci się to przydać.

From the APE site:

APE jest w pełni funkcjonalnym rozwiązaniem OpenSource zaprojektowany dla Ajax Push. Zawiera serwer komet i framework JavaScript. APE pozwala zaimplementować dowolne strumieniowanie danych w czasie rzeczywistym do przeglądarki internetowej, bez konieczności instalowania czegokolwiek po stronie klienta.

+1

TO, o czym mówię !. Oszczędziło mi konieczności wymyślania koła – skyeagle

+1

może pytanie jest słabo ramki, ale nie dostaję w ogóle, co to ma wspólnego z serwerem JS? Odpowiedź Pointy'ego jest jednak dobra! – oberhamsi

+3

@oberhamsi: Więc zagłosowałeś na mnie? Okazuje się, że to było dokładnie to, co OP chciał. Poświęć trochę czasu na przeczytanie komentarza powyżej twojego. Z PO wynika, że ​​odpowiedziała na pytanie. Powodem, dla którego opuściłem tę odpowiedź, było to, że zrobiłem to, czego najwyraźniej nie miałeś czasu zrobić. Przeczytałem dialog w innych komentarzach i wywnioskowałem, że to jest to, czego OP potrzebował, ale nie potrafiłem tego sformułować. Jeśli zrobisz to samo, zobaczysz, że OP chciał * wysłać * żądania z serwera do przeglądarki, co ma sens tylko wtedy, gdy przeglądarka wykonała wstępną prośbę. Przynajmniej skomentowałeś. – user113716

15

Sprawdź projekt RingoJS lub Node.js. Odpowiedź brzmi "tak", a nie tylko "mikro" lub "dowód koncepcji".

RingoJS

Node.js

express.js framework for node

+1

Vame accross nodeJS kilka dni temu. Nie jest dla mnie jasne, czy kod napisany przy użyciu node.js można uruchomić w przeglądarce (co właśnie próbuję zrobić). Czy możesz sprawdzić, czy serwer WWW napisany przy użyciu pliku node.js można uruchomić w zwykłej przeglądarce? – skyeagle

+1

@skyeagle: Co rozumiesz przez _ "uruchamianie w przeglądarce" _? – jwueller

+3

Nie, node.js to technologia ** po stronie serwera **. Jest oparty na Javascript, więc oczywiście * jakiś * kod może być powszechny między przeglądarką a serwerem, ale nie można tak naprawdę zaimplementować serwera w przeglądarce z wielu powodów. – Pointy

1

Istnieje dodatek do przeglądarki Firefox (dostępny również jako osobna aplikacja komputerowa) o nazwie Plain Old Webserver. Powinien mieć możliwość uruchamiania specjalnego skryptu JavaScript po stronie serwera, który ma dostęp do wszystkich wewnętrznych funkcji przeglądarki internetowej, w tym lokalnego dostępu do plików i bazy danych SQLite, dostępu do preferencji przeglądarki i historii oraz wszystkiego, co można zrobić z dodatkiem do przeglądarki Firefox.

0

JS HTTPD

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

to mały serwer HTTP UNIX napisany w JavaScript.

Działa od inetd, co oznacza, że ​​jego wydajność jest niska. Ale w przypadku witryn o małym natężeniu ruchu jest całkiem wystarczająca. Implementuje wszystkie podstawowe funkcje serwera HTTP, w tym:

  • Zabezpieczenia przed ".." nazwaniem plików.
  • Typowe typy MIME.
  • Przekierowanie ukośnika.
  • index.html
  • Spisy katalogów.

js_httpd może być również używany do obsługi HTTPS poprzez owijanie go stunnelem. Instrukcje są dołączone.

Inne drobne i/lub dziwne serwery WWW (wszystkie uruchamiane z inetd).

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

+0

Tytuł tego pytania i odpowiedzi powinien zostać zmieniony, aby odzwierciedlić, że serwery javascript nie są wymagane :) Byłem też zamierzałem poinformować o serwerze javascript, który może być użyty do testów jednostkowych, a co nie: https: //developer.mozilla .org/en-US/docs/Httpd.js/HTTP_server_for_unit_tests – Motin

0

Można spróbować „ewsjs jest wbudowany serwer WWW wewnątrz przeglądarce Przy opracowywaniu Ajax oparte i jedno- aplikacje stronicowania, często bardzo trudno jest przetestować te aplikacje, dopóki nie zostanie zainstalowany serwer WWW. (...)

EWS zapewnia wbudowany serwer internetowy, który wygląda na Twoją aplikację Ajax tak, jakby pochodzi z serwera Możesz umieścić dowolną logikę i w pełni przetestować swoją aplikację Ajax w przeglądarce bez runni na serwerze.

EWS obsługuje kilka kluczowych funkcji: rejestrowanie programów obsługi dla dowolnej ścieżki, rejestrowanie programów obsługi dla sparametryzowanych ścieżek (takich jak trasy Sinatra), rejestrowanie programu obsługi dla automatycznych (gdy nie ma innych dopasowań obsługi), przepisywanie jednej ścieżki do drugiej (jak w Apache lub nginx), asynchroniczny (dokładnie imitując prawdziwe połączeń ajax)”

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

Powiązane problemy