Projekt MajIrc
• tech • 573 słowa • 3 minuty czytania
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 Ajaxa. 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. Ale mówiąc szczerze to 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ć.
Trochę 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/serwisach (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ć ideę, ale zbytnio nie mam w czym tego zrobić i jakoś mi się nie chce. Zresztą to jest proste, co mam nadzieje, dobrze wytłumaczyłem i opisałem.
Komunikacja między skryptem a przeglądarką będzie odbywała się 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. Choć nie wiem jeszcze 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ś takiego prostego chyba będzie najlepszym rozwiązaniem.
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 wziąć się za pisanie kodu :)
Komentarze (0)