Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Stałe połączenie w AJAX-ie?
Forum PHP.pl > Forum > XML, AJAX > AJAX
juzwa
Rozmawiałem ostatnio ze znajomym ,który chciał żebym mu coś tam zrobił, stronę w PHP itd, jako, że trochę się na tym znam to przeszliśmy do omawiania szczegółów i w pewnym momencie mówi mi, żeby chciał mieć coś takiego, żeby nawiązać stałe połączenie z serwerem i gdy coś się zmieni to ma to się pokazać na stronie - konkretnie chodziło o wykres.

Chodziło mu o takie coś
- w momencie uruchomienia strony wysyłanie jest przez xmlHttpRequest żądanie, które trwa przez cały czas działania strony
- cały czas są dosyłane wyniki i prezentowane na stronie w postaci wykresu
- powiedział, że się z tym gdzieś na jakiejś stronie spotkał i że to było na 100% PHP + JS (ale niestety źródła, odnośnika nie znam)

Ja trochę się na tym znam, ale specjalistą nie jestem, miałem do czynienia z AJAX-em, ale czegoś takiego nie spotkałem, na to co wiem i jak to rozumiem działanie ajaxa wydaje mi się to niemożliwe - ale może za mało wiem i niezbyt to wszystko rozumiem.

Stąd moje pytanie - czy jest możliwe zrobienie czegoś takiego w AJAX-ie (a dokładniej za pomocą PHP i JS) , żeby dostawać wyniki z serwera bez czasowego odpytywania go (czyli bez funkcji która by się uruchamiała co ileś sekund) czyli na zasadzie, że jak się coś na serwerze zmieni to wysyłam do przeglądarki i to od razu widać
MMPrime
Teoretycznie jest to możliwe(zestaw funkcji ob_*), ale sama przeglądarka będzie zrywać połączenie.
sniezny_wilk
Z tego co się orientuje nie nawiążesz stałego połączenia, będziesz musiał co jakiś czas wywoływać funkcje.
Cezar708
Cytat(juzwa @ 25.04.2008, 04:51:14 ) *
Stąd moje pytanie - czy jest możliwe zrobienie czegoś takiego w AJAX-ie (a dokładniej za pomocą PHP i JS) , żeby dostawać wyniki z serwera bez czasowego odpytywania go (czyli bez funkcji która by się uruchamiała co ileś sekund) czyli na zasadzie, że jak się coś na serwerze zmieni to wysyłam do przeglądarki i to od razu widać


aby uzyskać asynchronicznie wyniki z serwera trzeba go co jakiś czas odpytywać (Request) i odpowiednio obrabiać odpowiedź (Response). Za pomocą JS i PHP nic innego nie da się zrobić. A na pewno nie istnieje coś takiego jak "stałe" zestawienie połączenia między przeglądarką a serwerem. I oficjalnie odpowiedź brzmi: NIE

ALE!

Jest pewien myk o którym już trochę wspomniał MMPrime.

Kiedyś miałem problem bo chciałem zrobić pasek postępu i potrzebne mi było "stałe zestawienie" zapytałem na tym forum czy jest coś takiego możliwe i dostałem odpowiedź, którą z powodzeniem wprowadziłem w życie.

Przejrzyj ten wątek.

Powinno Ci się sporo wyjaśnić i być może rozwiążesz swój problem


Pozdrawiam
Cezar708
jacekl
To co chcesz osiągnąć jest sprzeczne z podstawowymi założeniami HTTP, ale są sposoby, żeby to obejść - pogoogle'uj "comet web server" lub "reverse ajax", ew. zajrzyj do Wikipedii: http://en.wikipedia.org/wiki/Comet_%28programming%29

Na Sourceforge'u możesz znaleźć implementację w PHP: http://sourceforge.net/projects/comet/

JL
piotrf
no wlasnie robie cos podobnego tylko mam maly problem z ... sesjami.
Trzymam sobie takie polacznie z serwerem i jest fajnie - dziala ale jak tylko puszcze kolejne żądanie do serwera to czeka az to pierwsze sie skonczy tj. nie dostaje odpowiedzi od serwera, na firebugu idealnie to widac.
Ciekawi mnie to, ze ten efekt wystepuje tylko z sesjami ( standardowe session_start )

ma ktos pomysl ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.