![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 5.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Istnieje w mechanizm pozwalający na odświeżenie strony (bądź jej części) wywołany po stronie serwera (coś jak servlety)? Mój problem jest następujący: maszyna podpięta do Internetu wysyła dane do serwera gdzie aplikacja działająca jako daemon przetwarza dane i wrzuca je do bazy. Użytkownik wchodzi na stronkę odpala graf i obserwuje sobie na nim dane przychodzące z maszyny. Aktualnie odświeżanie następuje w regularnych interwałach wywoływane przez JavaScript. Czy istnieje jakiś sposób by (bez przepisywania aplikacji na Jave) oświeżanie grafu następowało tylko wtedy gdy pakiet dotrze z maszyny do aplikacji (ona wywoła refresh) bądź zostanie wrzucone do bazy (PostgreSQL - i tu jakiś trigger). Ma ktoś może jakiś pomysł, bo wujek Google nie bardzo wie jak to ugryźć? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Flash i sockety (badz xmlsocket)
Php + push ajax Ten post edytował wookieb 1.09.2010, 11:49:18 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
WebSockets - ale to jeszcze nie jest technologia, z której można korzystać. Póki co niepozostaje Ci nic innego jak odpytanie serwera co jakiś czas.
EDIT: wookieb zasugerował Flash i sockety, ale to chyba tak samo ciekawa opcja jak przepisywanie na Javę ![]() Ten post edytował Crozin 1.09.2010, 11:42:07 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 5.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedzi. Problem jednak w tym, że flash za dużo tu nie pomoże ponieważ graf miał być tylko przykładem - użytkownik widzi w rzeczywistości całe raporty oparte na tych danych a tylko pewne ich części należało by odświeżyć w zależności od danych dostarczanych z maszyny. Hmmm... ciężka sprawa...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No ale jaki widzisz problem? Bo ja nie widzę żadnego.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 5.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem pytania. Czy pytasz o powod dlaczego chce w ten sposob odswiezac? Otóż do sieci podpietych jest na razie ok. 20 urzadzen ktore wysylaja dane w regularnych odstepach. Jednak zmienia sie podejscie i teraz odstepy beda nieregularne i moga wynosic od kilku minut do kilku sek. Jezeli urzadzenie nic nie robi to nie chce przeciazac bazy zapytaniami o nowe dane (w zalozeniu jest kilka tyś maszyn + kilkanascie tyś użytkownikow). Dlatego chce odswiezac raporty tylko gdy sa nowe dane. Aplikacja jest jednak na tyle sporo (2 lata tworzenia kodu), że sporo czasu i pieniedzy zajelo by stworzenie czegos nowego badz tez przepisanie wszystkiego. To jest powod dla ktorego szukam innego rozwiazania.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie najlepszym rozwiązaniem będzie dla Ciebie maksymalne zoptymalizowanie żądań wysyłanych przy pomocy AJAXa. Zamiast odpytywać każdorazowo bazę możesz utworzyć sobie plik z czasem ostatniej aktualizacji - jeżeli jest on większy niż ten przesyłany jako parametr żądania, wtedy dopiero baw się w nawiązywanie połączenia i wysyłkę danych.
Możesz też to żądanie wysyłać do bardzo prostego skryptu (który jest poza infrastrukturą całej aplikacji) - dosłownie 10 linijek kodu. On zwracałby tylko informację o tym czy coś się zmieniło, jeżeli tak może przekierować na właściwą akcję aplikacji zwracającą dane. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 9 Dołączył: 21.05.2004 Skąd: Glogau/Breslau Ostrzeżenie: (0%) ![]() ![]() |
Zarówno z apletów Java jak i z animacji flasha możesz odpalać funkcje JavaScript. Więc dopisujesz sobie jakiś prosty skrypt w jednym albo drugim, który będzie utrzymywał upragnione przez Ciebie połączenie, po czym po odebraniu powiadomienia, wywołujesz funkcję js, która z kolei odpala żądanie ajaxowe. tadam. Tyle że w takim wypadku będziesz miał dużo zapytań w krótkim czasie. Pomyśl jeszcze o tym, jak te dane będą często aktualizowane, bo jeśli częściej niż co minutę, to może okazać się lepiej robić updt co minutę np. Niegłupim rozwiązaniem wydaje się też pomysł Crozina.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przejrzyj ten wątek: Komunikacja (powiadamianie) ServerSide -> ClientSide oparte na zdarzeniach
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:25 |