2009-06-04 21 views
5

Właśnie dowiedziałem się o silniku Push AJAX, ale działa on na Linux/Apache, który nie jest dla mnie opcją.W jaki sposób można przekazać dane do klienta strony internetowej?

http://www.ape-project.org/

Obecnie z AJAX do utrzymania bieżącej strony muszę odpytywać serwer częściej, co nie jest dobre dla wysokiego miejscu ruchu. Opcja przesyłania danych do klienta tylko w razie potrzeby jest świetną opcją, ale natywnie JavaScript nie obsługuje gniazd AFAIK. Jedna sztuczka, o której czytam, ale strona już nie istnieje, to użycie modułu Flash do obsługi komunikacji w gnieździe i przekazywania wiadomości do JavaScript.

Problem z badaniem tego podejścia polega na tym, że "JavaScript push" jako słowa kluczowe wymyślić funkcję push dla tablic zamiast kontekstu, który chcę.

W jaki sposób można ustanowić trwałe połączenie z serwerem, aby przekazywać komunikację w przeglądarce? Czy potrzebuję Flash/ActionScript, czy istnieje inna opcja, która działałaby z wszystkimi aktualnie aktywnymi przeglądarkami? (IE6/7/8, FF3, Safari, Chrome)

Jeśli chodzi o serwer, muszę również poznać komplikacje związane z polityką Origin oraz bezpieczeństwem portów. Doceniam wszystko, co możesz wskazać, co wyjaśni dostępne opcje.

+0

znalazłem kilka podobnych pytań, które prowadzą do kilku odpowiedzi ... i więcej pytań. :) http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client http://stackoverflow.com/questions/50831/how-to-push-data- do-różnych-klientów-typów-w-prawie-czasie rzeczywistym http://stackoverflow.com/questions/219868/client-notification-dla-i-use-an-ajax-push-lub- ankieta http://stackoverflow.com/questions/847227/real-time-chat-with-push-notification – Brennan

Odpowiedz

0

To ciekawe rzeczy, ale nie czytałem nic o problemach skalowalności na tych stronach Wiki. Co robi serwer WWW, jeśli masz 10 000 otwartych połączeń z długim odpytywaniem?

Ponadto, dla osób nie znających podstawowych pojęć, ważne jest zrozumienie, że przesuwanie danych z serwera do klienta w sposób ad-hoc jest niemożliwe i zawsze będzie. Nawet jeśli protokół HTTP to obsługuje, sieć nie byłaby, szczególnie jeśli jest włączona zapora sieciowa NAT.

W związku z tym wszelkie rozwiązania, które twierdzą, że oferują komunikację opartą na serwerze push, muszą opierać się na połączeniach zainicjowanych przez klienta, pozostawionych otwartych i docelowo przekroczonych. Mam obawy związane z tym, ponieważ musi to mieć negatywne konsekwencje dla skalowalności i wydajności serwera.

+0

Wygląda na to, że Facebook i google używają długich sondowań, a oni jeszcze nie upadli. W żaden sposób nie jest * niemożliwe *. – cgp

+0

Jeśli chcesz otworzyć połączenie z klientem z serwera, a NAT jest sposobem, w jaki metoda pukająca do portu może zostać użyta do nawiązania połączenia. Następnie możesz utrzymać gniazdo. Moją obawą jest to, że serwer ma wiele aktywnych gniazd. Co najmniej resetowałbym połączenie sporadycznie lub bezczynnie nieaktywnych klientów, gdybym mógł wykryć, czy klient jest bezczynny. – Brennan

+0

Cóż, altCognito, jeśli Todd Hoff ma rację na swoim blogu, zajął się tym w zeszłym roku inwestycja sprzętowa Facebooka o wartości 100 milionów dolarów. Ale artykuł zawiera kilka innych szczegółów dotyczących implementacji serwera. Oczywiście, długie pollingowanie nie jest czymś, co chcesz robić w IIS w .Net, lub jakiejkolwiek innej głównej platformie webserver/language, gdzie każde zablokowane połączenie wiąże się z kosztownymi zasobami. – cdonner

Powiązane problemy