Czym jest Rocket.Chat?
Kamil Romankiewicz
Rocket.Chat to projekt chatu grupowego oparty na licencji open-source. Celem autorów było stworzenie darmowej, otwartoźródłowej wersji popularnego Slacka. Jest to rozbudowane narzędzie do stworzenia własnego serwera chatu z dużymi możliwościami konfiguracyjnymi, które są dostępne po zalogowaniu do chatu jako administrator. Zmian w konfiguracji można również dokonywać poprzez udostępnione do tego metody API.
Rocket.Chat pozwala na tworzenie prywatnych oraz publicznych pokoi rozmów, umożliwia również rozmowy 1 na 1 z innym użytkownikiem. Może on także posłużyć do przesyłania dowolnego typu plików.
Możliwe jest skonfigurowanie audio-wideo konferencji, gdyż Rocket.Chat integruje się z zewnętrzną usługą Jitsi.Meet (https://jitsi.org/). Podczas nawiązywania połączenia audio-wideo tworzona jest konferencja w Jitsi.Meet a wiadomość z linkiem udostępniana jest w danym pokoju. Jitsi to jedna z wielu usług z którymi może się integrować Rocket.Chat.
Inne to m.in.: Jira, GitHub, Google Calendar.
Do komunikacji z serwerem Rocket.Chat, w zależności od naszych preferencji, możemy wykorzystać RESTowe API lub WebSockety. Nic nie stoi na przeszkodzie, aby korzystać z obydwu naprzemian, gdyż token uwierzytelniający wygenerowany przez metodę logowania w pierwszym API może być wykorzystywany w drugim i na odwrót.
Większość metod ma swoje odpowiedniki w jednym i drugim API i są one DOSYĆ dobrze udokumentowane w dokumentacjach znajdujących się pod tymi linkami:
- REST: https://rocket.chat/docs/developer-guides/realtime-api/
- WebSocket: https://rocket.chat/docs/developer-guides/rest-api/
Można jednak mieć do dokumentacji kilka zastrzeżeń. Jednym z moich zastrzeżeń jest np. to, że nie zostało opisane jakie błędy może zwracać dana metoda. Dużym plusem natomiast jest community jakie wytworzyło się wokół Rocket.Chatu oraz podejście twórców do użytkowników ich projektu. Oddali oni do dyspozycji użytkowników forum, na którym można zadać pytanie związane z serwerem. Udostępniono również instancję Rocket.Chatu gdzie mniej cierpliwi mogą się zarejestrować i porozmawiać z programistami – autorami projektu – o ile oczywiście jest akurat ktoś online na kanale support.
Kod projektu jest napisany w JavaScripcie z wykorzystaniem frameworku Meteor i znajduje się pod tym adresem: https://github.com/RocketChat/Rocket.Chat.
Ale..
Niestety nie jest tak kolorowo i Rocket.Chat nie jest idealny. Rocket.Chat często oferuje nam dużo więcej możliwości niż potrzebujemy. Jest to potężny projekt i nie zawsze warto go wykorzystywać do małych projektów, w których nie zależy nam na super rozbudowanych wiadomościach grupowych.
Trzeba również liczyć się z tym, że jest on napisany w JavaScriptcie z wykorzystaniem frameworka Meteor, co dla nieznających go programistów może być problemem w przypadku konieczności wprowadzenia zmian w kodzie serwera. W itCraft nie boimy się takich wyzwań, dlatego rozpoczęliśmy naszą przygodę z Rocket.Chatem.
Kolejną wadą, o której muszę wspomnieć jest to, że w przypadku, gdy chat jest tylko częścią projektu, musimy zadbać o synchronizację danych między bazą wykorzystywaną przez backend a bazą Rocket.Chat – każda rejestracja w aplikacji oznacza wywołanie przez nasz backend metody tworzenia konta Rocket.Chatu. Podobnym przykładem jest chociażby zmiana nazwy użytkownika – należy wziąć pod uwagę, aby dane te zmienić również w bazie Rocket.Chat.
Jeżeli chodzi o aplikację klienta chatu, czy to webowego czy mobilnego, to najlepszą opcją jest napisanie własnych aplikacji. Owszem, Rocket.Chat dostarcza klienta webowego oraz SDK, które można wykorzystać w aplikacji androidowej, lecz aplikacje te nie pozwalają na wprowadzenie większych zmian oraz w przypadku projektu, w którym chat to tylko część funkcjonalności, ciężko takiego klienta byłoby zintegrować z pozostałymi elementami aplikacji.
Jak zacząć?
Instalacja Rocket.Chat różni się w zależności od systemu operacyjnego a nawet wersji Linuxa, na którym zamierzamy go instalować. Zatem odsyłam do dokumentacji, w której instalacja jest opisana krok po kroku: https://rocket.chat/docs/installation/.
Instrukcja instalacji jest bardzo dokładna i przebiegła na naszym serwerze bez najmniejszych problemów. Po instalacji przechodzimy pod adres http://localhost:3000 gdzie przy pierwszym wejściu pojawi się kreator, który w intuicyjny sposób poprowadzi nas przez konfigurację naszego własnego serwera chatu grupowego. Po pomyślnym przejściu przez kreator, serwer jest gotowy. Ponowne wejście na powyższy adres ukaże nam panel logowania do chatu.
Czy są jakieś alternatywy?
Nie jest możliwym znalezienie gotowego serwera chatu, który w 100% pokryje wymagania klientów odnośnie sposobu działania, wyglądu aplikacji webowych i/lub mobilnych, a także funkcjonalności. Rocket.Chat mimo wszystko wydaje się, że jest najbliżej aby to osiągnąć. Jedynym rozwiązaniem, które w pełni będzie się pokrywać z wymaganiami klienta, będzie napisanie całego chatu od początku samemu bez korzystania z zewnętrznych rozwiązań. Nie zawsze jest to jednak możliwe. W przypadku, gdy chcemy mieć szybkie i tanie rozwiązanie to Rocket.Chat jest idealnym wyborem.
Podsumowanie
Rocket.Chat jest fajny bo:
– jest darmowy,
– jest open-source (na liberalnej licencji ,MIT License),
– ma bardzo duże możliwości konfiguracji,
– umożliwia tworzenie kanałów zarówno publicznych jak i prywatnych oraz rozmów 1 na 1,
– pozwala na przesyłanie plików oraz audio-wideo konferencje,
– udostępnia API zarówno REST jak i na WebSocketach,
– rozwinęło się duże community.
Rocket.Chat nie jest dla Ciebie, gdy:
– projekt wymaga ingerencji w kod serwera a Ty nie znasz i nie chcesz poznać JavaScript/Meteor,
– chat jest tylko częścią projektu i obawiasz się synchronizacji między bazami danych,
– masz wystarczający budżet i wiedzę aby napisać własne rozwiązanie.
Osobiście, jako zwolennik własnych rozwiązań, podczas wyboru między Rocket.Chat a napisaniem własnego rozwiązania, skłaniałbym się ku drugiej opcji. Tak jak wspomniałem, daje to znacznie większą kontrolę nad kodem, nie musimy się martwić synchronizacją baz danych przez co niektóre metody API będa się wykonywały szybciej. Natomiast biorąc pod uwagę, że budżet projektu często nie pozwala na napisanie całego chatu od nowa, Rocket.Chat śmiało może stać się odpowiednim wyborem.