![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 4 Dołączył: 14.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Postanowiłem w ramach ćwiczenia zrobić prosty czat oparty na PHP/MySQL/AJAX Czat ma mieć możliwość wysyłania wiadomości i następnie ta wiadomość zostaje wyświetlona w okienku czatu bez przeładowania strony. Wszystko jest okej, ale: 1. Gdy dodam: wiadomość nr 1, otrzymuję (wiadomość nr 1) wiadomość nr 2, otrzymuję (wiadomość nr 1,wiadomość nr 1, wiadomość nr 2) wiadomość nr 2, otrzymuję (wiadomość nr 1,wiadomość nr 1, wiadomość nr 2,wiadomość nr 1,wiadomość nr 2, wiadomość nr 3) itd. czyli wiadomości się powtarzają( obrazek lepiej to wyjaśnia) ![]() Uploaded with ImageShack.us jak tego uniknąć ? 2. Załóżmy ze mamy 2 userów. Jeden wysyła wiadomość i mu się odświeża okno, a drugiemu nie. Jak to rozwiązać, że gdy ktoś wyśle wiadomość okno przeładuję się wszystkim. index.php
sendmessage.php
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 486 Pomógł: 101 Dołączył: 27.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
1. linijka 18 Twojego kodu. Pobierasz wszystkie wiadomości od nowa, a potem wysyłasz do clienta. Zrób tak, że np. przy ładowaniu strony będzie się pobierać do zmiennej id ostatnio wysłanej wiadomości, wysyłaj je z intervalem, pobieraj zapytaniem id większe od tego w przesłanej zmiennej a następnie jedynie wiadomości, które dojdą w callbacku (patrzy punkt 2). po odebraniu danych z serwera aktualizuj zmienną o najnowsze id.
2. Zrób Interval, który sprawdza, czy nie ma nowych wiadomości. I niech nie odświeża strony, tylko dodaje nową wiadomość dynamicznie (w końcu po to robi się czaty w oparciu o ajax). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 4 Dołączył: 14.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
aha, czyli funkcja pobierająca wiadomości ma wykonywać się sama co jakiś czas, zamiast wykonywać się po wciśnięciu 'submit'
a jak zrobić żeby była automatycznie wywoływana co np. sekundę ? a czy nie obciąży to serwera gdy będzie tak często wywoływana ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 9 Dołączył: 25.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
no to zrób co 10 sekund, i tak rozmówcy tego nie zauważą
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
a czy nie obciąży to serwera gdy będzie tak często wywoływana ? Ajaxa w takiej formie, nie używa się do budowy czatu. Jak już musisz, to zainteresuj się longpolling, lub co będzie bardziej poprawne, websockets. -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 4 Dołączył: 14.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dla małego ruchu, tak. Jednak po co odświeżać stronę co sekundę/dziesięć jak można to zrobić tylko wtedy, gdy jest to konieczne.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 04:06 |