![]() |
![]() ![]() |
![]() |
-Dandn- |
![]()
Post
#1
|
Goście ![]() |
Ma ktoś jakiś pomysł jak napisać prosty live-chat w JS? Chodzi o to, żeby każdy odwiedzający użytkownik mógł porozmawiać z właścicielem strony, jeśli właściciel jest dostępny na stronie www.
Wymyśliłem coś takiego, że po wejściu na stronę, każdy odwiedzający otrzymuje unikalny identyfikator. Jako właściciel jak jestem na stronie, to gdy użytkownik napisze wiadomość wtedy wyskakuje mi okienko z jego wiadomością i identyfikatorem. Wtedy rozpoczyna się rozmowa tylko z tym użytkownikiem. Jak napisze inna osoba wtedy wyskakuje 2 okienko itd. Nie wiem czy takie rozwiązanie byłoby dobre, macie jakieś inne pomysły? Są takie czaty, ale pisane we flashu, a to mnie nie obchodzi. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
ja bym to tak zrobił (od strony projektowej, konkretne rozwiązania sobie dopowiesz, chociaż mogę jQuery polecić do AJAXa czy do manipulacji DOM):
po stronie serwera musisz mieć tabelę w bazie danych z wiadomościami, od kogo wiadomość, o której godzinie, co zawiera wiadomość itp. po stronie klienta, jeśli jesteś zalogowany jako właściciel: - musisz mieć mechanizm do wyświetlania okienek ("widok") - musisz mieć "model" aktualizacji danych, czyli np. 1. co 10 sekund pytasz AJAXem (np. przez jQuery) czy pojawiły się nowe wiadomości, jeśli się pojawiły wyświetlasz je, dodając np. nowy paragraf <p>....</p> do okienka. Tych okienek oczywiście może być kilka, więc musisz je jakoś identyfikować w skrypcie JS. 2. w każdym okienku oczywiście masz <input type="text" /> do wpisywania. Po naciśnięciu enter, wysyłasz żądanie AJAXem do serwera z wiadomością. po stronie serwera jest oczywiście walidowane wszystko + mechanizm sesji żeby się zorientować "kto jest aktualnie zalogowany, od kogo ta wiadomość". tak w skrócie. Jeśli chodzi o użytkownika nieadmina, to funkcjonalność musi być okrojona, tylko jedno okienko oraz możliwość wysyłania wiadomości tylko do ciebie (a ty możesz do różnych osób, zależności w którym okienku będziesz odpowiadać). No i bym też pilnował transferu, obciążenia serwera, w razie potrzeb zrobił aktualizację nie co 10 ale co np. 30 sekund, albo tylko w czasie aktywności użytkownika na stronie (ruch myszy itp.). Jak zrobić kilka okienek? możesz np. za każdym razem dodawać ten sam HTML: $("body").append("<div class='okienko'><div class="cos-tam"></div></div>'); ale to nie jest rozwiązanie eleganckie, więc lepiej już stworzyć sobie w HTML "szablon" a potem ten szablon tylko klonować (jest zdaje się funkcja clone w jQuery). Ewentualnie użyć jakiegoś gotowego systemu szablonów. No, generalnie sprawa jest prosta i przyjemna ![]() Ten post edytował PrinceOfPersia 17.03.2013, 17:12:46 -------------------- |
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
Dokładnie tak jak napisałeś chcę zrobić, więc pomogłeś bo nie tylko ja miałem taki pomysł
![]() A to tak bardzo może obciążać transfer? Powiedzmy przy 10 rozmowach naraz? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
ciężko powiedzieć. Zależy czy masz duży ruch na stronie i jakie masz bebechy (kod PHP, zapytania SQL), no i na jakim serwerze to stoi. No i zależy od tego czy będziesz przesyłał to prostym JSONem czy będziesz walił z grubej rury HTMLa wraz z formatowaniem.
Myślę więc, że trzeba to przetestować i patrzeć na statystyki, w razie czego optymalizować, bo gdybać ciężko. Ten post edytował PrinceOfPersia 17.03.2013, 17:16:46 -------------------- |
|
|
-Gość- |
![]()
Post
#5
|
Goście ![]() |
No w sumie to racja
![]() Jak skończę wrzucę demo na forum. Dzięki za odp. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Powiedzmy przy 10 rozmowach naraz? Przy 10 to raczej minimalny. Raczej zakładałem scenariusz pesymistyczny iluś tysięcy userów, ale fakt, że jeśli to ma być góra 10 rozmów to powinno nie być problemów. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 05:04 |