![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Chciałbym wykonać czat z konsultantem na stronę www. Tylko nie wiem jak się za to zabrać. Na pewno będę pracował na jQuery. Muszę wykonać kontroler rozmowy, okienko dla konsultanta oraz prosty formularz na stronie. Tylko jak to wykonać, by konsultant mógł np. prowadzić dwie rozmowy jednocześnie. I drugie pytanie, gdzie zapisywać dane z czatu i czy w ogóle je zapisywać. Proszę o pomoc! -------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Takie rzeczy to chyba lepiej w Javie pisać
![]() Ja bym zrobił to w ten sposób: Tabela z wiadomościami (od kogo, do kogo, data, treść, czy_przeczytane) i tabela z informacją czy są nowe wiadomości (nick, czy nowe). Wysyłanie wiadomości za pomocą AJAX'a i zapis do bazy nowej wiadomości + ustawienie czy_nowe=true dla adresata wiadomości. Oprócz tego jakaś funkcja, która odpytuje serwer (też AJAX), czy są nowe wiadomości (jakiś parametr z tym od kogo oczekujemy odpowiedzi), jeżeli są to je pobiera. Ustawia, że zostały przeczytane, a w drugiej tablicy, że brak nowych. Jeżeli są nowe to jakiś komunikat lub ikonka lub co tam chcesz:) Co do dwóch rozmów, to możesz podzielić ekran na zakładki (takie pseudo GG) i w przypadku, gdy jest nowa wiadomość od danego użytkownika to jakoś go zaznaczasz. Z tym, że w takim przypadku nie wiem co będzie lepsze, czy uruchomienie dwóch funkcji odpytujących, czy wysyłanie/ odbieranie wszystkich danych i rozdzielanie ich po stronie serwera/klienta. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Zbyt dużo tych zapytań. Myślałem nad tym, żeby rozmowę zapisać ale po zakończeniu konsultacji.
Czy jest możliwość nasłuchiwania? Jakaś funkcja, która by czekała na jakieś dane i wykonywała odpowiednią funkcję. Uważam, że to nie skrypt po stronie klienta / konsultanta powinien pobierać wiadomości a tylko wysyłać. Trzeba to jakoś uprościć. Podzielić czat na dwa komunikatory. Każdy nasłuchiwał by gdzieś czy ktoś do niego coś wysyła i wysyłał wiadomości na dane id drugiego komunikatora. Czy jest takie coś do załatwienia? -------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jasne, że najlepszym rozwiązaniem byłoby, gdyby rozmowa 'wisiała w powietrzu'. Tylko, że funkcja nasłuchująca (jeżeli masz do dyspozycji PHP, JS + AJAX) musi łączyć się z serwerem, żeby sprawdzić czy jest jakaś wiadomość do ciebie. Nie jesteś w stanie (jako klient) odebrać żadnych danych, jeżeli najpierw o nie nie poprosisz.
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Jak więc wywiesić rozmowę?
![]() -------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ja bym zrobił to tak:
1) tabele w bazie np: - Rozmowy: kto, do_kogo, czy_nowe; (czyli dla jednej rozmowy dwa takie wpisy, ponieważ w pierwszym twoje id jest w kto, a w drugim do_kogo) - Wiadomości: treść, czy_przeczytana, od_kogo, kto (dla każdego wysłanej wiadomości) - Zalogowany: kto, czy_zalogowany 2) zawsze działa funkcja (AJAX), która łączy się co x czas i sprawdza czy istnieje wpis gdzie do_kogo == ja i czy_nowe==true, jeżeli tak to informuje mnie o tym, że X (czyli osoba z kolumny kto) wysłała mi nową wiadomość i mogę otworzyć czat. 3) nawiązanie rozmowy z X, czyli wysłanie pierwszej wiadomości: - uruchomienie programu, który łączy się z serwerem (AJAX) i sprawdza, czy X zalogowany. Dodaje nowy wpis do tabeli Rozmowy(bądź aktualizuje wpis czy_nowe=true) oraz Wiadomosci. Jeżeli X nie zalogowany to w informacjach odebranych z serwera znajduje się taka informacja, żebym nie czekał niepotrzebnie. - jeżeli X ma uruchomioną stronę, to jego funkcja nasłuchująca informuje go o tym, że ma nową wiadomość. - X otwiera czat i automatycznie pobiera wiadomości ode mnie gdzie czy_przeczytana == false. Aktualizuje automatycznie, że przeczytane oraz w tabeli Rozmowy aktualizuje, że ode mnie brak nowych wiadomości. - jak X odpowie, to całe działanie się powtarza. Możesz jeszcze dodać jakieś pole z czasem ostatniego wpisu i po x czasie uznać, że rozmowa jest nie aktualna. Ten post edytował bastard13 3.09.2010, 21:44:44 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 84 Dołączył: 27.11.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat(bastard13) Jasne, że najlepszym rozwiązaniem byłoby, gdyby rozmowa 'wisiała w powietrzu'. Tylko, że funkcja nasłuchująca (jeżeli masz do dyspozycji PHP, JS + AJAX) musi łączyć się z serwerem, żeby sprawdzić czy jest jakaś wiadomość do ciebie. Nie jesteś w stanie (jako klient) odebrać żadnych danych, jeżeli najpierw o nie nie poprosisz. PHP ma obsługę socketów (choć na serwer proponowałbym pythona, a już najlepiej C jeżeli masz taką możliwość), a dla JS zostało napisane parę bibliotek umożliwiających nasłuchiwanie (np: jSocket). Wystarczy napisać wielowątkowy serwer w oparciu o gniazda oraz klienta który by się z nim łączył. Oprócz JS masz jeszcze Adobe Flex, który również umożliwia takie połączenie. W taki oto sposób połączenie będzie ciągle "wisieć". |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli nie będzie to dużym problemem możesz skorzystać z widget gadu-gadu
![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Sądzę, że ten artykuł Ci się bardzo przyda:
http://blog.wilgucki.pl/2010/04/komunikacj...o+World!%29 -------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli nie będzie to dużym problemem możesz skorzystać z widget gadu-gadu ![]() Wydaję się że sprawdzi się. Jednakże, nie lubię korzystać z gotowych rozwiązań, ponieważ zawsze gdzieś na stronie będzie że to i to pochodzi stąd, skrypt sondy stąd a czat stąd. Uważam że takie coś wpływa negatywnie na wizerunek nie tylko strony firmowej ale całej firmy. Jest to na pewno jakieś rozwiązanie i można to wprowadzić do czasu gdy czegoś swojego nie napiszę ![]() Sądzę, że ten artykuł Ci się bardzo przyda: http://blog.wilgucki.pl/2010/04/komunikacj...o+World!%29 Czegoś takiego potrzebuję. Tylko nie rozumiem aplikacji klienckiej - tego xml'a. -------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 84 Dołączył: 27.11.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Tylko nie rozumiem aplikacji klienckiej - tego xml'a. to kod dla Flex-a, o którym mówiłem, można też uzyć Silverlight-a od Microsoftu, jednakże klient musiałby instalować dodatkowe oprogramowanie aby zobaczyć czat ![]() Ten post edytował Quantum 4.09.2010, 14:47:09 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
To co z tym kodem zrobić?
-------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 84 Dołączył: 27.11.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
sprawdź bibliotekę o której piszę, ew. skompiluj kod flex jego kompilatorem.
Kod mxmlc flex.mxml
Ten post edytował Quantum 4.09.2010, 14:52:10 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.06.2025 - 23:36 |