Cytat(Sephirus @ 29.06.2011, 23:09:56 )

Pomogło

Zrobię to w ten sposób na razie ale i tak podrążę jeszcze ten temat

Więc tak skrótowo flash z JavaScript może się komunikować więc może służyć za zdarzeniowego pośrednika w komunikacji - tu można by zastosować w pełni comet...
zakładamy, że nie ma flasha zainstalowanego i chodzi nam tylko o "komunikację zdarzeniową"...
od podstaw tej komunikacji na obejście zwykłym ajax'em...
oczywiście przy ajax'ie masz jeszcze narzut na nagłówki http i kosztowne każdorazowo nowe połączenie otwierane i zamykane
zrób sobie skrypcik ze sleep po 1s i pętlą np. 20 - do wymuszenia wysłania treści (wszystko zależy od konfiguracji serwera ale nieraz sam flash nie wystarczy) zastosuj zestaw funkcji
@ob_flush();
@flush();
@ob_end_flush();
lub ustaw ob_implicit_flush(true)
wiadomo, że będziesz widział linijka po linijce tak jakby na żywo obserwowany comet -
ale ajax'a odpowiedź dostaniesz dopiero na końcu po zamknięciu połączeniato co niemal każdy stosuje np. do czatów to odpytywanie serwera co sekundę - MASAKRA ISTOTNA (w przypadku tego tematu szkoda było wymyślać coś lepszego)
nieefektowne tego obejście, a w zasadzie efektowne ale jeszcze mocno lipne to przez AJAX pytasz się skrypta o jakieś zdarzenie - najlepiej najprościutszego skrypta tylko sprawdzającego tablicę zdarzeń w bazie danych i który jeśli nie ma nic do przekazania idzie spać na jakiś interwał czasu coby dla jednego urzyszkodnika nie zajechać serwera (na ileś tam milisekund) i w następnym przebiegu pętli sprawdza tablicę w bazie czy jest jakaś wiadomość dla szkodnika - jeśli jest zostaje zwrócony komunikat i skrypt kończy swoje działanie np. przez exit jednocześnie zamykając połączenie lub jeśli skrypt jeszcze coś miał zrobić możesz wysłać odpowiednie nagłówki z długością treści i by przeglądarka zamknęła połączenie a skrypt coś zrobi i kończy działanie (ale o tym nie potrzebnie wspomniałem że może jeszcze coś skrypt robić - to już lepiej niech inny moduł wykonuje a to niech będzie najprostszy skrypt) - gdy połączenie zostanie zamknięte skrypt js dostaje odpowiedź ajax i odpowiednio ta odpowiedź jest obrobiona -
ponieważ czekamy na następne zdarzenie natychmiast odpytujemy po raz kolejny ten sam skrypt by było otwarte połączenie...
oczywiście obsłużyć trzeba też błędy komunikacji w js jak zbyt długi czas oczekiwania i inne powodujące zerwanie połączenia i trzeba nawiązać od nowa połączenie
W TYM ROZWIĄZANIU KAŻDY SZKODNIK PRZEZ AJAX ŁĄCZY SIĘ Z MINI DEMONKIEM a cała aplikacjia zapisuje komunikaty w tablicy - gdy komunikat jest pobrany przez demonka to demonek usuwa ten komunikat z tablicy komunikatów...
jeszcze poprawkę trzeba wziąć na limit otwartych połączeń z tą samą domeną - więc dobrze by było odpytywać subdomenę lub inną domenę...
JESZCZE TO NIE JEST IDEALNE GDYŻ NA SERWERZE POWSTANIE TYLE DEMONKÓW ILU JEST SZKODNIKÓW ;]
optymalizacja to zrobienie jednego demonka z rozwiązania powyżej - ale to już trzeba by napisać mini serwerek www w php obsługujący każde połączenie i żądanie nasłuchujący na jakimś porcie (lub na innej domenie) - niby są też takie małe projekciki nawet na serwerki całych stron www ale to tylko ciekawostka...
rozwiązanie które z Twojej strony wymagało by najmniejszego nakładu pracy to gotowiec
APE (Ajax Push Engine) - z tego jeszcze nie korzystałem jakoś i bodajże jeśli jest zainstalowany flash to chyba z niego korzysta a jeśli nie to z komunikacji ajax... ale nowsza wersja podobno na innych stronkach nie potrzebuje proxy więc chyba samą technikę ajax zastąpili np. przez jsonp (gdzie skutek ten sam o omija się tak ograniczenia domenowe) [tak przy okazji jakbyś miał załączać zewnętrze skrypty js i dopiero po ich załadowaniu wykonywać jeszcze coś to temacik np.
[JavaScript]Załączanie prototype poprzez js] - w APE jest też napisany jakiś serwerek ale to głównie bodajże biblioteka js...
i jeszcze może link do jakiegoś polskiego blogu:
APE: Comet serwer oraz kompletny framework javascript. Kompleksowe rozwiązanie Ajax Push.może o niczym nie zapomniałem lub nic istotnego nie pominąłem ;]