Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne] JS Czat - jak to napisać
-Dandn-
post 17.03.2013, 16:40:34
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.
Go to the top of the page
+Quote Post
PrinceOfPersia
post 17.03.2013, 17:10:45
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 smile.gif Mam nadzieję, że pomogłem jakoś.

Ten post edytował PrinceOfPersia 17.03.2013, 17:12:46


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 17.03.2013, 17:12:05
Post #3





Goście







Dokładnie tak jak napisałeś chcę zrobić, więc pomogłeś bo nie tylko ja miałem taki pomysł biggrin.gif

A to tak bardzo może obciążać transfer? Powiedzmy przy 10 rozmowach naraz?
Go to the top of the page
+Quote Post
PrinceOfPersia
post 17.03.2013, 17:15:46
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 to the top of the page
+Quote Post
-Gość-
post 17.03.2013, 17:22:14
Post #5





Goście







No w sumie to racja smile.gif

Jak skończę wrzucę demo na forum. Dzięki za odp.
Go to the top of the page
+Quote Post
PrinceOfPersia
post 17.03.2013, 17:30:30
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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2025 - 05:04