Jedną z wprowadzonych w WordPressie 3.6 nowości jest Heartbeat API. W uproszczeniu jest to mechanizm umożliwiający dwukierunkową komunikację pomiędzy przeglądarką osoby odwiedzającej naszą stronę a serwerem, odbywającą się w czasie (prawie) rzeczywistym i w sposób niezauważalny dla użytkownika. Sam WordPress korzysta z tej funkcji do obsługi automatycznego zapisu, blokowania dostępu do edytowanych wpisów i ostrzeżeń o automatycznym wylogowaniu. Najważniejszy jest jednak fakt, że z Heartbeat API będą mogły również korzystać wtyczki i szablony, co otwiera przed ich twórcami zupełnie nowe możliwości.
Wprawdzie tego typu mechanizm nie jest niczym nowym (wielu programistów implementowało go na swoje własne sposoby), ale włączenie go do WordPressa jest zdecydowanie dobrym posunięciem.
Jak działa Heartbeat API?
Działanie Heartbeat API jest dosyć proste. Co określony interwał czasu (domyślnie co 15 sekund) przeglądarka wysyła za pomocą skryptu JavaScript żądanie XHR (XMLHttpRequest) do serwera i (opcjonalnie) otrzymuje od niego odpowiedź. Skrypt odbierający żądanie po stronie serwera może wykonywać dowolne czynności – dokładnie tak samo jak w przypadku żądań przesyłanych za pomocą Ajax.
Do czego może służyć Heartbeat API?
Sposobów na wykorzystanie nowej funkcji WordPressa znajdzie się sporo. Dobrym przykładem jest wtyczka WP Heartbeat Notify, która w momencie publikacji nowego wpisu wyświetla wszystkim osobom przeglądającym naszą stronę okienko z odpowiednim powiadomieniem. Trzeba pamiętać, że wymaga ona WordPressa w wersji 3.6-beta3 lub nowszej.
W analogiczny sposób można stworzyć na przykład mechanizm powiadamiania o nowych komentarzach, który w sumie byłby bardziej przydatny niż informowanie o nowych wpisach. Jestem przekonany, że po premierze WordPressa 3.6 zobaczymy prawdziwy wysyp wtyczek korzystających z Heartbeat API i przekonamy się, że pomysłowość programistów nie zna granic.
Jakie są wady Heartbeat API?
Moją główną obawą dotyczącą Heartbeat API jest wydajność. O ile w przypadku serwisów z niewielkim ruchem wysyłanie co 15 sekund żądania do serwera nie powinno stanowić problemu, o tyle w przypadku większej ilości odwiedzających obciążenie generowane przez ten mechanizm może zacząć być odczuwalne. Związane jest to nie tyle z samym faktem przesyłania żądań, ale z tym, co i jak będą robiły funkcje przez nie wywoływane. To jednak zależy tylko i wyłącznie od twórców wtyczek, które w tej chwili jeszcze nie istnieją – z wyrokowaniem wstrzymajmy się więc do momentu, w którym zaczną pojawiać się pierwsze poważne rozszerzenia korzystające z Heartbeat API.