WordPress heartbeat API w praktyce
-
Upload
maciek-kuchnik -
Category
Technology
-
view
118 -
download
9
description
Transcript of WordPress heartbeat API w praktyce
WP HEARTBEAT API W PRAKTYCE
Maciej Kuchnik indelso.pl
HEARTBEAT API?
Dwukierunkowa komunikacja przeglądarka - serwer w „czasie rzeczywistym”
!
W WordPress od wersji 3.6
JAK TO DZIAŁA?XHR (XMLHttpRequest)
JS Event - heartbeat-send - heartbeat-tick - heartbeat-error - heartbeat-connection-lost - heartbeat-connection-restored - heartbeat-nonces-expired
WP Filter - heartbeat_received - heartbeat_send - heartbeat_nopriv_received - heartbeat_nopriv_send
WP Action - heartbeat_tick - heartbeat_nopriv_tick
co X
sekund
HEARTBEAT JS
• wp.heartbeat.enqueue()
• wp.heartbeat.dequeue()
• wp.heartbeat.isQueued()
• wp.heartbeat.hasFocus()
• wp.heartbeat.disableSuspend()
• wp.heartbeat.interval()
HEARTBEAT JS EVENTS
• heartbeat-send
• heartbeat-tick
• heartbeat-error
• heartbeat-connection-lost
• heartbeat-connection-restored
• heartbeat-nonces-expired
HEARTBEAT PHPdla zalogowanych
filtry
• heartbeat_received
• heartbeat_send
akcja
• heartbeat_tick
dla niezalogowanych
filtry
• heartbeat_nopriv_received
• heartbeat_nopriv_send
akcja
• heartbeat_nopriv_tick
wp.heartbeat.enqueue(id1, data, overwrite);
wp.heartbeat.enqueue(id2 data, overwrite);
wp.heartbeat.enqueue(id3 data, overwrite);
KOLEJKA
id1 !
id2 !
id3
heartbeat-sendXHR
XHRif ( !empty($_POST['data']) )
apply_filters( 'heartbeat_received', $response, $data, $screen_id );
apply_filters( 'heartbeat_send', $response, $screen_id );
do_action( 'heartbeat_tick', $response, $screen_id );
$response['server_time'] = time(); wp_send_json($response);
jQuery(document).on( 'heartbeat-tick.id2', function( e, data ) { //do something });
jQuery(document).on('heartbeat-error', function(e, jqXHR, textStatus, error) { console.log('ERROR'); console.log(textStatus); console.log(error); });
INTERWAŁwp.heartbeat.interval(speed, ticks);
speed = ‚fast’ / 5 ; 15 ; 30 ; 60 ; 'long-polling' ticks (domyślnie 30) - tylko przy speed=5 - liczba requestów po których speed wraca do normalnej wartości
apply_filters( 'heartbeat_settings', array() )
JS
PHP
PRZYKŁAD
HEARTBEAT W WP-ADMIN
HEARTBEAT W WP-ADMIN
HEARTBEAT W WP-ADMIN
PRZYKŁAD NA FRONCIE
IMPLEMENTACJA
IMPLEMENTACJA
IMPLEMENTACJA
IMPLEMENTACJA
IMPLEMENTACJA
PYTANIA?