Do przesyłania danych z klienta do serwera i odwrotnie wykorzystywane są różne protokoły. Zasady ich działania opisane są w odpowiednich standardach. W tym artykule omówimy jeden protokół przesyłania danych - WebSockets.

Czym jest protokół WebSocket?

WebSocket to zaawansowana technologia pozwalająca na stworzenie połączenia pomiędzy klientem a serwerem (przeglądarką a serwerem) i umożliwienie komunikacji pomiędzy nimi w czasie rzeczywistym. Główną różnicą WebSocket jest to, że pozwala on na odbieranie danych bez konieczności wysyłania osobnego żądania, jak to na przykład dzieje się w protokole HTTP. Po nawiązaniu połączenia dane przyjdą same, bez konieczności wysyłania żądania. Jest to zaleta wykorzystania protokołu WebSocket w czatach czy raportach giełdowych, gdzie trzeba otrzymywać stale aktualizowane informacje. Protokół może jednocześnie odbierać i wysyłać informacje, co pozwala na dwukierunkową komunikację w trybie full-duplex, co przekłada się na szybszą wymianę informacji.

Jak działa WebSockets?

Połączenie między klientem a serwerem pozostaje otwarte, dopóki nie zostanie przerwane przez jedną ze stron lub zamknięte przez timeout. Wykonują one handshake w celu ustanowienia połączenia między klientem a serwerem. Ustanowione połączenie pozostaje otwarte, a komunikacja odbywa się za pomocą tego samego kanału, dopóki połączenie nie zostanie zakończone po stronie klienta lub serwera. Komunikaty wymieniane są dwukierunkowo. WebSocket pozwala na szyfrowanie przesyłanych danych. W tym celu stosuje się dodatek nad protokołem WSS, który koduje dane po stronie nadawcy i dekoduje je po stronie odbiorcy. Dla wszelkich pośredników informacja pozostaje zaszyfrowana. Bez szyfrowania dane stają się celem dla zagrożeń.

Kiedy używać WebSocket?

Protokół WebSocket jest idealny, gdy potrzebujesz aktualizacji danych w czasie rzeczywistym i możliwości wysyłania wiadomości do klienta. Oto niektóre z bardziej rozpowszechnionych przypadków użycia gniazd internetowych:

  • platformy wymiany;
  • aplikacje do gier;
  • chatboty;
  • powiadomienia push;
  • sieci społecznościowe;
  • aplikacje do czatowania;
  • Aplikacje IoT.

Dlaczego warto rozważyć użycie protokołu WebSocket?

WebSocket zapewnia aktualizacje w czasie rzeczywistym poprzez zapewnienie połączenia między serwerem a klientami. Gniazda internetowe są kompatybilne z HTML5 i zapewniają kompatybilność wsteczną ze starszymi wersjami HTML. Dlatego są obsługiwane przez wszystkie nowoczesne przeglądarki internetowe - Google Chrome, Mozilla Firefox, Safari i inne. Są również kompatybilne na wszystkich platformach: Android, iOS, aplikacje internetowe i aplikacje desktopowe. Pojedynczy serwer może mieć otwartych jednocześnie wiele połączeń WebSocket, a nawet wiele połączeń z tym samym klientem, co pozwala na łatwe skalowanie.

Jak stworzyć WebSocket w AppMaster.io?

Stwórzmy WebSocket w AppMaster.io na przykładzie prostego chatbota. Aby stworzyć WebSocket, musisz stworzyć proces biznesowy w backendzie aplikacji, który będzie odpowiadał na wiadomości użytkowników i wysyłał odpowiedzi: Backend > Business Processes.

Proces biznesowy odbiera wiadomość i w zależności od treści zwraca w odpowiedzi ciąg znaków.

Jeśli wiadomość = "Cześć!", to odpowiedź będzie brzmiała "Cześć!";
Jeśli wiadomość = "Jak się masz?", BP zwróci ciąg "Świetnie! A co u Ciebie?";
W każdym innym przypadku BP będzie działać jak echo i zwróci w odpowiedzi ten sam ciąg, który otrzymał na wejściu.

Następnie należy stworzyć WebSocket Endpoint dla tego BP, aby komunikował się z botem: Backend > Endpoints > New Endpoint > WebSocket Endpoint.

W nowo otwartym oknie należy wypełnić następujące pola:

  • Typ punktu końcowego: GET
  • URL punktu końcowego: adres, pod którym punkt końcowy będzie dostępny z zewnątrz;
  • Business Process: wskazuje BP, który będzie pracował na tym WS Endpoint;

Po skonfigurowaniu punktu końcowego należy opublikować aplikację, która będzie z niego korzystać.

Możesz przetestować WebSocket the Postman app. Znajdź szczegółowe instrukcje dotyczące korzystania z Postmana tutaj. Po autoryzacji w Postmanie należy utworzyć nowe żądanie WebSocket: New > WebSocket Request.

Należy podać pełny adres WebSocket. Można go uzyskać w Swagger(Preview > Development) wysyłając puste żądanie do utworzonego Endpointa. Pełny adres znajduje się w bloku Request URL.

Po skopiowaniu go i wklejeniu do odpowiedniego pola w Postmanie należy zamienić https na wss, ponieważ ten protokół jest używany do komunikacji z serwerem. Połączenie WebSocket wymaga autoryzacji. Aby to zrobić, należy wysłać żądanie z nagłówkiem (Header) Cookie, który zawiera token dostępu gen_app_auth_token=. Aby uzyskać token, należy dokonać autoryzacji, uruchamiając punkt końcowy autoryzacji i przekazując swoją nazwę użytkownika i hasło.

Możesz ręcznie znaleźć Cookie w następujący sposób:

  • w opublikowanej aplikacji internetowej w przeglądarce, naciśnij F12, aby przejść do narzędzia deweloperskiego;
  • przejdź do zakładki Network i przełącz się na zakładkę Headers;
  • w sekcji Request Headers znajdź Cookie i skopiuj wartość.

Dodając wartość Cookie do nagłówka żądania do WebSocket w Postmanie i klikając Connect, możesz sprawdzić, czy połączenie z WS zostało pomyślnie nawiązane.

Wynik udanego połączenia jest pokazany poniżej:

Możesz wysłać wiadomość w bloku New Message, ale musi być ona sformatowana w JSON. Jeśli chcesz wysłać ciąg znaków "Hello", to wiadomość będzie wyglądać tak: {"message": "Cześć"}. W tym przypadku nazwa klucza (czyli wiadomości) musi odpowiadać nazwie zmiennej na wejściu BP.

Wynik wykonania zapytania:

W ten sposób można stworzyć WebSocket w AppMaster.io. Sprawdź więcej przydatnych informacji o pracy na platformie w naszym Help Center.