WordPress heartbeat API w praktyce

Post on 08-Sep-2014

119 views 9 download

Tags:

description

WordUp Kraków 25.07.2014

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?

DZIĘKUJĘ!

Maciej Kuchnik maciek@indelso.pl

facebook.com/maciekkuchnik