Gdzie szukać inspiracji?
Wyjrzyj za okno i zobacz otaczający Cię świat pełen informacji, obrazów, słów i treści, które ma do przekazania. Teraz wyobraź sobie, ze musiałbyś ten widok odświeżać by zobaczyć coś nowego. Gdybyś zapomniał to zrobić życie dalej toczyłoby się swoim torem. Pomyśl więc jak wiele mógłbyś przeoczyć. Podobnie sprawa się ma z serwisami i aplikacjami, z którymi na co dzień mamy styczność w Internecie. Tymi serwisami gdzie szybkość informacji, oraz dostęp do nich ma ogromne znaczenie. Nie trzeba daleko szukać przykładu. Pierwsze z brzegu portale informacyjne, które udostępniają na swoich stronach relacje z ważnych wydarzeń, artykuły, czy komentarze. Dlaczego próbując sprawdzić czy nie pojawiły się nowe informacje musisz odświeżać swoją przeglądarkę? Oprócz nabijania pieniążków z odsłon reklam jest jeszcze jedna ważna przyczyna. Niewiedza, że można inaczej i czym są aplikacje czasu rzeczywistego.
Definicja aplikacji czasu rzeczywistego
Czym są aplikacje czasu rzeczywistego? Definicja obowiązująca w szkolnictwie wyższym jest dość złożona. Prawdopodobnie gdybyśmy dodali do tego parę mądrych wykresów i wzorów to już przestałbyś/łabyś to czytać. Na nasze potrzeby, bo rozmawiamy o Internecie, określimy to jako serwis, który udostępnia treści dla użytkownika automatycznie po wprowadzeniu zmian po stronie serwera. Np. redaktor/administrator dodaje nowy post na blogu, a my od razu go widzimy i możemy w nim wejść w pełną interakcję. Redaktor popełnił w nim literówkę, ale szybko ją zmienił, nasza przeglądarka od razu otrzymała poprawną treść. Dało to duże szanse, że nikt nie zauważył błędów, bo strona sama zmieniła treść bez przeładowywania.
No to dlaczego nie wszystkie serwisy są budowane w ten sposób?
To pytanie jest dość złożone, ale najprostszą przyczyną, jak do tej pory były po prostu koszty. Stworzenie takiej aplikacji samemu wiązałoby się z przygotowaniem wielu warstw logiki w naszej aplikacji (na przykładzie mobilnej):
- HTML Templates
- App Login
- Reactive UI update system
- Native container
- Speculative client-side updates
- Client-side data store
- Custom data sync protocol
- Realtime database monitoring
- Build & update system
- Language Runtime
- Database
Jak widać czekałoby nas sporo pracy, a zespół programistów miałby nie lada zajęcie i parę dobrych tygodni wyjętych z życiorysu. Całe szczęście mamy już rok 2016 i z pomocą przychodzą nam znane nie od dziś websockety oraz gotowe rozwiązania takie jak socket.io, MeteorJS i Apollo. Ten ostatni daje duże wsparcie dla takich języków jak np. Ruby On Rails i baz danych Oracle, SQL Server.
W Czarnym Kodzie nie bylibyśmy sobą gdybym nie wziął teraz na tapetę MeteorJS. Jak widzieliście w powyższym przykładzie ilość warstw do zbudowania aplikacji czasu rzeczywistego jest ogromna. Jak to wygląda w przypadku tego frameworka?
- HTML Templates
- App Login
- MeteorJS
- NodeJS
- MongoDB
I już. Tak naprawdę wszystko co możliwe dostajemy z paczki i całość działa praktycznie od razu. Skoro wiemy już, że przy wykorzystaniu konkretnych rozwiązań technologicznych koszty stworzenia serwisu działającego w czasie rzeczywistym drastycznie spadają, warto rozważyć taką opcję. Mówiąc śmielej, to nawet nie ma się co zastanawiać.
Jakiś przykład?
Spróbujmy omówić dynamiczny serwis informacyjny, gdzie użytkownik wchodzi na stronę na której znajdują się wiadomości z jego miasta, albo ze świata. Czyta interesujący go artykuł, aż nagle ukazuje mu się nowododany artykuł powiązany. Dzięki temu może od razu przejść do interesującej go treści. Bez tego pewnie albo zamknąłby już stronę albo przeszedł do innego działu nie zauważając ważnej dla niego informacji.
Ten sam użytkownik innego dnia ponownie wchodzi na stronę w celu znalezienia najnowszych informacji na dany temat, ale coś odciąga jego uwagę i na jakiś czas porzuca stronę z otwartym oknem. W tym czasie pojawiło się kilka ciekawych newsów, które użytkownik zobaczy od razu gdy powrócił na stronę. Podobnie gdyby brał udział w ciekawej konwersacji i komentował artykuł. Odpowiedzi innych użytkowników będą pojawiać mu się automatycznie bez konieczności dodatkowych powiadomień.
Podobnie gdy użytkownik wchodzi na stronę w poszukiwaniu relacji z ważnego wydarzenia, czy spotkań. Bardzo często takie relacje można spotkać w formie jednego artykułu, który redaktor co jakiś czas edytuje, a następnie publikuje zmiany. Dzięki takiemu rozwiązaniu tworzy się coś w rodzaju linii czasu, która pozwala nowoprzybyłym użytkownikom doczytać to co przegapili. Ale znów by zobaczyć nowe treści trzeba stronę przeładować. W przypadku aplikacji czasu rzeczywistego nawet zwyczajna edycja artykułu przez redaktora i zapisanie zmian, wiązać się będzie z tym, że przeglądarka sama uaktualnia treści o najnowsze. Dzięki temu nie tylko mamy wrażenie, ale naprawdę mamy do czynienia z relacjami prowadzonymi na żywo, także w formie tekstowej. To tak jakbyśmy oglądali wiadomości na żywo w telewizji z miejsca zdarzenia.
Wyobraźmy sobie do tego jeszcze możliwości włączenia, za zgodą użytkownika, powiadomień na „Pulpicie” naszego komputera, lub włączenie wibracji w telefonie gdy pojawią się nowe treści i mamy serwis idealny. W przypadku gdy korzystamy z takich rozwiązań jak Meteor, nie jest to w żaden sposób problematyczne.
Konkluzja
Jeżeli planujesz budowę serwisu lub portalu internetowego, powinieneś już na tym etapie zastanowić się czy nie warto pójść w kierunku rozwiązań dających dostęp do dynamicznych treści. Wyobraź sobie jakie możliwości daje to rozwiązanie w przypadku kantorów, kalkulatorów, forów, informacji, czy nawet stron, nie wspominając już nawet o aplikacjach mobilnych. Pamiętaj też, że dostęp do treści dynamicznych wpływa bardzo pozytywnie na przyciąganie użytkownika końcowego, a nam daje większą kontrolę nad wyświetlanymi treściami.