MajIrc

Dziś zacząłem coś robić w sprawie mojego klienta IRC dostępnego na www, bez żadnych apletów Javy czy ramek. Ideą jest stworzenie klienta IRC dostępnego przez przeglądarkę internetową w formie aplikacji webowej z wykorzystaniem Ajaxu. Celem jest łatwe i przyjemne korzystanie z usług IRC-a bez potrzeby instalacji klientów i programów. Połączenie wbudowanych (lub zwykłych) ramek z Ajaxem miało by jakiś sens, ale zostańmy przy aplikacji webowej.

Może się wydawać, że popełniłem błąd przy wpisywaniu tytułu notki, że wkradła się literówka, a poprawną nazwą powinno być MalIrc. Sam nie wiem jak nazwać ten projekt. MalIrc to byłoby bliższe podstawowym metodom nazewnictwa moich projektów, mIRC już istnieje, a MajIrc można interpretować jako skrót od Malcom Ajax IRC. Na razie niech tak zostanie, może później coś lepszego uda się wymyślić.

Wiele rozważałem nad tym, jak to powinno funkcjonować i jak rozwiązać główne aspekty projektu. Rozmawiając z kumpelą (Neutrinką) i nieco orientując się w tym kierunku, doszedłem do wniosku, że rozwiązanie będzie "standardowe". Standardowe oznacza tutaj tyle, że oparte będzie na dwóch działających ze sobą skryptach/interfejsach (nie wiem jak to odpowiednio nazwać).

Potrzebny jest "pomost" pomiędzy serwerem IRC a przeglądarką. Taka bramka, która będzie działać na serwerze stale połączona z serwerem IRC wymieniająca z nim bezpośrednio dane. Stale, tzn. w danej sesji klienta tworzonej przy odpaleniu strony (uruchomieniu aplikacji). Bramką będzie prosty program w C, jakiś klient IRC-a Neutrinki w C (nirc bodajże) lub skrypt w php/perl/python. Najprawdopodobniej będzie to skrypt w php, bo w tym już akurat zacząłem pisać. Choć niewykluczone, że docelowo bramka może zostać przepisana w perlu ;)

Bramka odbiera dane z serwera IRC i zapisuje je w pliku (logu). Skrypt ładowany w przeglądarce pobiera dane z pliku i odpowiednio je interpretuje, formatuje i przekazuje do przeglądarki. Skrypt ten również pobierając dane z przeglądarki (dane wprowadzone przez usera) zapisuje na serwerze w pliku (buforze). Plik bufora jest pobierany przez bramkę i wysyłany do serwera IRC.

Zrobiłbym mały graf prezentujący działanie, wtedy łatwiej można zilustrować sposób działania, ale zbytnio nie mam w czym tego zrobić i jakoś mi się nie chce. Zresztą to jest proste. Mam nadzieje, że również dobrze to wytłumaczyłem i opisałem.

Komunikacja między skryptem a przeglądarką będzie odbywana z wykorzystaniem obiektu XMLHttpRequest. Dane z pliku loga będą pobierane co jakiś okres czasu, np. 1 sekundę, przez przeglądarkę i log będzie czyszczony. Nie wiem jak to do końca będzie funkcjonować.

Zastanawiam się jeszcze nad wieloma rzeczami. Czy dane z serwera IRC, to jest pobierane przez skrypt do wysłania do przeglądarki, formatować odpowiednio po stronie serwera i wysyłać już sformatowane i zinterpretowane. Czy może lepiej użyć XMLa do transportu danych, albo pobrać w czystym formacie IRC-owym i wykonać wszystko po stronie przeglądarki w JS. Aspekt ten do końca jeszcze nie jest ustalony.

Lepszym rozwiązaniem wydaje mi się druga opcja, bo wtedy łatwo można byłoby manipulować i formatować dane w zależności od ustawień klienta. W przyszłości myślę o wprowadzeniu jakiś ustawień i preferencji konfigurowanych przez użytkownika ;) Prócz tego prostsze byłoby w ogóle odpowiednie nimi zarządzanie i dynamiczne dołączanie do odpowiednich elementów strony/aplikacji klienta.

Jako interfejs aplikacji może wykorzystam qoodoo lub stworzyć coś prostszego z kilku źródeł/skryptów. Na początek coś prostego to chyba będzie najlepsze rozwiązanie.

Wspominając o możliwości zastosowania klienta Neutrinki, chciałem zaznaczyć, że stworzyła ona bramkę WAP - IRC. Wykorzystała tam kody swojego testowego klienta IRC zwanego nirc (Testowy NeutrIRC Neutrinki) oraz kilka skryptów w CGI :) więcej na odpowiedniej stronie.

Wystarczy gadania, lepiej wsiąść się za pisanie kodu :)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *