Heartbeat API Noțiuni de bază

Cu 3.6, cunoscut sub numele de "Oscar", lansat, vă permite să aruncați o privire asupra unora dintre noile caracteristici disponibile pentru dezvoltatori. În special, în această serie voi fi în căutarea noului API al bătăilor inimii și demonstrând cum îl puteți folosi în pluginurile și temele.


Ce este Heartbeat API?

Aplicația API pentru batai de inimă permite comunicarea regulată între browserul utilizatorului și server. Una dintre motivațiile inițiale a fost aceea de a permite blocarea posturilor și avertizarea utilizatorilor atunci când mai mulți utilizatori încearcă să editeze o postare sau să avertizeze utilizatorul când le-a expirat logarea.

Această "comunicare" implică trimiterea în mod curent a datelor către server, care apoi răspunde cu orice date adecvate. API permite ca plugin-urile să atașeze propriile date la ambele capete, oferind plug-in-ului posibilitatea de a comunica, de asemenea, între server și browser. Vă puteți gândi la aceste etape (datele trimise de la browser la server și răspunsul trimis de la server la browser) ca cele două "bătăi" care constituie un ciclu cardiac. Întregul proces se repetă la intervale regulate. Toate acestea se întâmplă în fundal, astfel încât de cele mai multe ori probabil că niciodată nu veți ști că este acolo.


Trimiterea datelor de la browser la server

În mod implicit, Heartbeat începe să ruleze automat, dar transmite vreodată date către server atunci când are date de trimis. Pentru a enquege datele trebuie să utilizați wp.heartbeat.enqueue () funcția în fișierul JavaScript. Această funcție are trei argumente:

  • Mâner - (șir) Acesta este doar un identificator de șir pentru datele dvs. Asigurați-vă că este unic.
  • Date - (obiect) Datele pentru trimitere ca obiect.
  • Trece peste - (bool) Fie pentru a merge peste existent date. Dacă este adevărat, orice date adăugate anterior cu mânerul furnizat sunt înlocuite. Dacă există deja date false și date pentru acel mâner, nu face nimic.

De exemplu:

 wp.heartbeat.enqueue ('wptuts-plugin', 'foo': 'bar', 'wp': 'tuts',, false);

Notă: Orice date care sunt trimise cu un bate este imediat scos din coadă. Datele enqueued după acest punct sunt trimise cu bataia următoare.

Pentru a verifica dacă un anumit mâner are deja date în așteptare în coadă, sau pentru a prelua acele date, puteți utiliza funcția wp.heartbeat.isQueued (). Această funcție ia un mâner ca singurul său argument și se întoarce fie nul sau datele asociate care așteaptă în coada de așteptare.

Acest lucru este util, de exemplu, dacă doriți să adăugați argumente suplimentare pentru datele deja puse în coadă:

 // Datele pentru a adăuga var new_data = 'version': '3.6'; dacă data = wp.heartbeat.isQueued ('wptuts-plugin')) // Datele există deja - îmbinarea datelor cu date noi new_data = jQuery.extend (date, new_data);  // Coadă și date excedentare wp.heartbeat.enqueue ('wptuts-plugin', new_data, true); / * wptuts-plugin are acum datele și noile date asociate cu acesta: 'foo': 'bar', 'wp': 'tuts', 'version': '3.6'; * /

Bacsis: Ar trebui să listați "emoţie"ca dependență pentru orice fișiere JavaScript care utilizează acest API. Vom acoperi acest lucru, împreună cu un plugin de exemplu, în partea a treia.


Trimiterea datelor de la server la browser

La următoarea "batere" datele de mai sus sunt trimise serverului, atunci când aceste date sunt primite de la server există trei cârlige care sunt declanșate:

  • heartbeat_received - Aceasta filtrează răspunsul serverului la browser. Acesta transmite, de asemenea, datele primite de la browser și ID-ul ecranului de administrare (sau "front" dacă această solicitare este de la front-end).
  • heartbeat_send - Acest cârlig filtrează, de asemenea, răspunsul serverului la browser. Singura diferență față de filtrul de mai sus este că nu transmite datele recepționate.
  • heartbeat_tick - Această acțiune este declanșată chiar înainte ca răspunsul să fie stabilit. Transmite matricea de răspuns și ID-ul ecranului ca argumente.

Dacă utilizatorul curent este deconectat, atunci cârligele:

  • heartbeat_nopriv_received
  • heartbeat_nopriv_send
  • heartbeat_nopriv_tick

sunt declanșate în schimb. (nopriv standuri pentru niciun privilegiu)

În cea mai mare parte, probabil că veți avea nevoie doar de primul filtru: heartbeat_received / heartbeat_nopriv_received. Aceste filtre transmit datele primite de la browser și, astfel, ne permit să verificăm dacă avem date asociate mânerului nostru, înainte de a include răspunsul nostru:

 funcția wptuts_respond_to_browser ($ response, $ data, $ screen_id) if (isset ($ data ['wptuts-plugin'])) // Avem date cu mânerul nostru! Să răspundă cu ceva ... // echo $ data ['wptuts-plugin'] ['foo']; // imprimă "bar"; $ answer ['wptuts-plugin'] = array ('salut' => 'lume');  retur $ răspuns;  // Au fost logați utilizatori: add_filter ('heartbeat_received', 'wptuts_respond_to_browser', 10, 3); // Au deconectat utilizatorii add_filter ('heartbeat_nopriv_received', 'wptuts_respond_to_browser', 10, 3);

Ascultarea pentru întoarcere "Beat"

În cele din urmă, pentru a finaliza ciclul, putem asculta când răspunsul de la server este primit de browser. Când se întâmplă acest lucru, WordPress declanșează evenimentul bătăile inimii tic-. Putem contacta acest lucru cu apelul nostru pentru a procesa răspunsul:

 jquery (document) .ready (functie ($) $ (document) .on (' console.log (date ['wptuts-plugin']); // Imprimă la consola 'hello': 'world'););

Notă: Se recomandă cu insistență să utilizați evenimente cu nume de evenimente, pe care le obligați apelul de apel invers bătăi de buzunar spațiu unic de nume ca mai sus, și nu doar bătăile inimii tic-.

Aceasta, în esență, este cum să profitați de Heartbeat API. În următoarea parte a seriei vom analiza modurile în care puteți manipula pulsul bătăii. În partea finală vom crea un exemplu de lucru al unui plugin care utilizează API-ul.

Cod