WordPress heartbeat API w praktyce

1,055 views

Published on

WordUp Kraków 25.07.2014

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,055
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

WordPress heartbeat API w praktyce

  1. 1. WP HEARTBEAT API W PRAKTYCE Maciej Kuchnik indelso.pl
  2. 2. HEARTBEAT API? Dwukierunkowa komunikacja przeglądarka - serwer w „czasie rzeczywistym” ! W WordPress od wersji 3.6
  3. 3. JAKTO 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
  4. 4. HEARTBEAT JS • wp.heartbeat.enqueue() • wp.heartbeat.dequeue() • wp.heartbeat.isQueued() • wp.heartbeat.hasFocus() • wp.heartbeat.disableSuspend() • wp.heartbeat.interval()
  5. 5. HEARTBEAT JS EVENTS • heartbeat-send • heartbeat-tick • heartbeat-error • heartbeat-connection-lost • heartbeat-connection-restored • heartbeat-nonces-expired
  6. 6. HEARTBEAT PHP dla zalogowanych filtry • heartbeat_received • heartbeat_send akcja • heartbeat_tick dla niezalogowanych filtry • heartbeat_nopriv_received • heartbeat_nopriv_send akcja • heartbeat_nopriv_tick
  7. 7. wp.heartbeat.enqueue(id1, data, overwrite); wp.heartbeat.enqueue(id2 data, overwrite); wp.heartbeat.enqueue(id3 data, overwrite); KOLEJKA id1 ! id2 ! id3 heartbeat-send XHR
  8. 8. XHR if ( !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);
  9. 9. 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); });
  10. 10. 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
  11. 11. PRZYKŁAD
  12. 12. HEARTBEAT W WP-ADMIN
  13. 13. HEARTBEAT W WP-ADMIN
  14. 14. HEARTBEAT W WP-ADMIN
  15. 15. PRZYKŁAD NA FRONCIE
  16. 16. IMPLEMENTACJA
  17. 17. IMPLEMENTACJA
  18. 18. IMPLEMENTACJA
  19. 19. IMPLEMENTACJA
  20. 20. IMPLEMENTACJA
  21. 21. PYTANIA?
  22. 22. DZIĘKUJĘ! Maciej Kuchnik maciek@indelso.pl facebook.com/maciekkuchnik

×