Jak korzystać z zdarzeń serwera HTML5

Jak korzystać z zdarzeń serwera HTML5

Cel

Po przeczytaniu tego samouczka powinieneś być w stanie zrozumieć i skorzystać z zdarzeń serwera HTML5.

Wymagania

  • Nie wymaga żadnych szczególnych wymagań

Konwencje

  • # - Wymaga podanego polecenia Linuxa, które można było wykonać z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Biorąc pod uwagę polecenie Linux, które ma być wykonane jako zwykły użytkownik niepewny

Wstęp

Zdarzenia Server-Sent to HTML5 Technologia, która pozwala klientowi automatyczne monitorowanie powiadomień o zdarzeniach z serwera i reagowanie w razie potrzeby. Ta technologia jest bardzo przydatna do powiadomienia wydarzeń na żywo, na przykład wdrożenie aplikacji do przesyłania wiadomości na żywo lub kanał informacyjny. W tym samouczku zobaczymy, jak wdrożyć tę technologię za pomocą PHP i JavaScript.

Prosty przykład

Ze względu na ten samouczek będziemy współpracować z listą „zwierząt”, która zostanie wyświetlona na prostej stronie HTML. Podczas gdy w rzeczywistej aplikacji dane zostałyby przechowywane i pobierane z bazy danych, w tym przypadku, dla uproszczenia, użyjemy tablicy PHP. Chcemy uzyskać powiadomienie w czasie rzeczywistym o zmianach na liście zwierząt, abyśmy mogli odpowiednio zaktualizować naszą stronę HTML, bez konieczności jej odświeżenia.



Kod boczny serwera

Na początek, zaludniemy naszą małą gamę zwierząt w Zwierząt.php Plik (pracujemy w katalogu głównym naszego serwera WWW VirtualHost):

Kopiuj

Zapisz i zamknij plik jako Zwierząt.php. Teraz, dla najważniejszej części: musimy napisać skrypt, który emituje wiadomość, która będzie ostatnio używana przez nasz kod JavaScript po stronie klienta. Z dużą ilością fantazji nazwiemy scenariusz scenariusz.php. Kod jest bardzo prosty, oto:

Kopiuj

Pierwszą rzeczą, na którą należy zauważyć, jest to, że zadzwoniliśmy nagłówek Funkcja w wierszach 2-3: Jest to funkcja używana do wysyłania Surowe nagłówki HTTP. W tym przypadku nazywamy to dwa razy: pierwszy w wierszach 2, aby skonfigurować Kontrola pamięci podręcznej Pole nagłówka i określają dyrektywy buforowania (bez buforowania strony), drugi w wierszach 3, aby ustawić Typ zawartości Do tekst/strumień zdarzeń. Te konfiguracja nagłówków jest niezbędna, aby nasz skrypt działał poprawnie. Należy również zauważyć, że aby poprawnie pracować, nagłówek Funkcja musi być zawsze wywoływana przed utworzeniem jakiegokolwiek innego wyjścia.

Po skonfigurowaniu nagłówków HTML po prostu użyliśmy wymagają raz stwierdzenie w wierszach 6, aby wymagać treści Zwierząt.php Plik, który zawiera tablicę, którą napisaliśmy wcześniej. W prawdziwym scenariuszu zostałby zastąpiony przez Zapytanie SQL Aby odzyskać takie informacje z bazy danych.

Wreszcie w wierszach 9-11 wysłaliśmy naszą odpowiedź do klienta: kodowany JSON Tablica „zwierząt”. Bardzo ważna rzecz do zauważenia: format zdarzeń po stronie serwera wymaga, aby każda odpowiedź wysłana przez serwer była prefiksowana przez dane: sznur, a następnie dwa NOWOŚĆ LINE. W tym przypadku użyliśmy \N nowa postać, ponieważ działamy na platformie podobnej do Unix; Aby zapewnić kompatybilność międzyplatformową Php_eol stały.

Możliwe jest nawet przełamanie komunikatu odpowiedzi na wielu wierszach: w tym przypadku każda linia, jak powiedziano wcześniej, musi zacząć od „Data:”, a następnie musi nastąpić jedna nowa postać. Dodatkowa nowa linia jest wymagana tylko na ostatniej linii.

Serwer może również kontrolować, jak często klient powinien spróbować ponownie się połączyć (domyślnie jest 3 sekundy) i nazwa wydarzenie (domyślnie to „wiadomość”) wysłane do klienta. Aby dostosować ten pierwszy, musimy użyć spróbować ponownie Dyrektywa, a następnie pożądany przedział czasu, wyrażony w milisekundach. Na przykład, aby skonfigurować interwał 1 sekundy:

echo „Postrudź: 1000 \ n”;

Zauważ, że nawet tutaj wymagana jest nowa linia. Aby zmienić nazwę zdarzenia, musimy użyć wydarzenie dyrektywa:

echo „wydarzenie: Customevent \ n”;

Domyślne zdarzenie to „wiadomość”: jest to ważne, ponieważ zdarzenie musi być określone w kodzie JavaScript klienta podczas dodawania słuchacza zdarzenia, jak zobaczymy za chwilę.

Po wysłaniu naszej odpowiedzi zadzwoniliśmy spłukać Funkcja: jest to potrzebne do pomiaru danych do klienta.



Kod boczny klienta

Pierwszą rzeczą, którą zamierzamy zrobić po stronie klienta, jest przygotowanie naszego pliku HTML z listą dostępnych zwierząt:

   
Kopiuj

To naprawdę podstawowy HTML z odrobiną php, aby wyświetlić listę zwierząt w momencie ładowania strony i dołączyć nasze .plik JS (skrypt.JS), ale będzie serwować nasz cel. Teraz zobaczmy, w jaki sposób możemy korzystać z zdarzeń po stronie serwera. Pierwszą rzeczą, którą musimy zrobić, jest instancja Obiekt źródła zdarzenia. W naszym pliku JavaScript napisz:

Niech Eventource = new Eventource („Skrypt.php '); 
Kopiuj

Jak widać, przekazaliśmy ścieżkę do naszego skryptu serwera jako argument w Wydarzenia Konstruktor obiektu. Ten obiekt otworzy połączenie z serwerem. Teraz musimy dodać Słuchacz wydarzenia, abyśmy mogli wykonywać niektóre działania, gdy wiadomość jest odbierana z serwera:

Niech Eventource = new Eventource („Skrypt.php '); wydarzenia.addEventListener („Message”, funkcja (event) let data = json.Parse (wydarzenie.dane); Let ListElements = Dokument.getElementsBaTagname („li”); dla (niech i = 0; i < listElements.length; i++)  let animal = listElements[i].textContent; if (!data.includes(animal))  listElements[i].style.color = "red";   ); 
Kopiuj

Po otrzymaniu wiadomości używamy JSON.analizować Metoda w wierszu 4 w celu przekształcenia danych wysyłanych przez serwer (ciąg, zawarty w dane właściwość obiektu zdarzenia), do tablicy JavaScript.

Następnie zapętlimy się w wierszach 7-11 przez wszystkie elementy z

  • tag, które są elementami naszej listy zwierząt: jeśli jakiś element nie wydaje się już w tablicy wysyłanej przez serwer, kolor tekstu zawarty na liście jest zmieniany na czerwony, ponieważ „zwierzę” nie jest Dłuższe dostępne (lepszym rozwiązaniem byłoby włączenie tylko zmiany lub braku nazwy elementu w odpowiedzi serwera, ale naszym celem jest pokazanie, jak działa technologia). Zmiana strony nastąpi w czasie rzeczywistym, więc nie trzeba odświeżyć. Możesz zauważyć, w jaki sposób nasza strona korzysta z zdarzeń wysłanych serwera, w poniższym filmie:

    Jak widać, gdy tylko „kot” zostanie usunięty z tablicy „zwierząt” (nasze źródło danych), element wyświetlany na stronie HTML jest modyfikowana, aby odzwierciedlić tę zmianę.

    Strumień danych między serwerem a klientem można przerwać za pomocą zamknąć Metoda wydarzenia obiekt:

    wydarzenia.zamknąć()

    Do obsługi połączenia otwarty, I błąd Wydarzenia, dedykowani słuchacze zdarzeń można dodać do obiektu.

    Powiązane samouczki Linux:

    • Rzeczy do zainstalowania na Ubuntu 20.04
    • Jak wysłać powiadomienia stacjonarne za pomocą powiadomienia-send
    • Jak obsługiwać zdarzenia ACPI w Linux
    • Jak zbudować aplikację Tkinter za pomocą obiektu zorientowanego na…
    • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
    • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
    • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
    • Podstawowe polecenia Linux
    • Lista klientów FTP i instalacja na Ubuntu 22.04 Linux…
    • Pobierz na żywo CD/DVD Linux