Статьи

API Heartbeat: изменение пульса

В первой части этой серии мы рассмотрели основы API Heartbeat, и как это можно реализовать в плагине. В этом уроке мы рассмотрим, как вы можете изменить «пульс» сердцебиения.

По умолчанию сердце WordPress бьется каждые 15 секунд. Вы можете понизить эту частоту до одного удара каждую минуту. В качестве альтернативы вы можете временно увеличить частоту до одного удара каждые 5 секунд — но только временно на две с половиной минуты, прежде чем она будет сброшена до «стандартного» удара: «4 ударов в минуту».


Чтобы изменить импульс по умолчанию, вы можете использовать фильтр wp_heartbeat_filter который фильтрует начальные настройки API Heartbeat. Этот фильтр не позволяет вам изначально установить «быстрый» импульс: вместо этого вы можете указать только число от 15 до 60 (интервал между ударами в секундах).

1
2
3
4
5
function wptuts_heartbeat_settings( $settings ) {
    $settings[‘interval’] = 60;
    return $settings;
}
add_filter( ‘heartbeat_settings’, ‘wptuts_heartbeat_settings’ );

Хотя запросы отправляются на сервер только при наличии данных для отправки, Hearbeat запускается автоматически при загрузке страницы. Вы можете отключить автозапуск из настроек пульса по умолчанию:

1
2
3
4
5
function wptuts_heartbeat_settings( $settings ) {
    $settings[‘autostart’] = false;
    return $settings;
}
add_filter( ‘heartbeat_settings’, ‘wptuts_heartbeat_settings’ );

Переключаясь с серверной части на браузер, Heartbeat будет запускаться только в том случае, если:

1
wp.heartbeat.start();

называется. Вы также можете отключить Heartbeat на стороне клиента:

1
wp.heartbeat.stop();

Помимо включения и выключения Heartbeat, вы можете управлять импульсом (например) в ответ на определенные события, инициированные пользователем. Например, вы можете прослушивать, когда пользователь запускает действие, которое требует более регулярной связи с сервером, и, таким образом, временно увеличивать скорость.

Из вашего скрипта JavaScript:

1
2
3
4
5
6
7
8
// 1 beat every 5 seconds for a maximum of two and half minutes
wp.heartbeat.interval( ‘fast’ );
 
// 1 beat every 60 seconds
wp.heartbeat.interval( ‘slow’ );
 
// 1 beat every 15 seconds
wp.heartbeat.interval( ‘standard’ );
Предупреждение: хотя «быстрый» длится всего две с половиной минуты, если вы постоянно устанавливаете импульс на «быстрый», то, по сути, он постоянно работает с такой скоростью. Вы должны быть осторожны с тем, как вы меняете пульс, и делайте это только тогда, когда это необходимо.

Помимо изменения импульсной стороны браузера, мы также можем делать это каждый раз, когда браузер связывается с сервером. Это можно сделать, установив в ответе « heartbeat_interval » — это может быть « fast », « slow » или « standard ».

01
02
03
04
05
06
07
08
09
10
11
12
13
14
function wptuts_respond_to_browser( $response, $data, $screen_id ) {
    if ( isset( $data[‘wptuts-plugin’] ) ) {
        // Plug-in data being sent to browser
        $response[‘wptuts-plugin’] = array(
            ‘hello’ => ‘world’
        );
 
        // Slow the hearbeat
        $response[‘heartbeat_interval’] = ‘slow’;
    }
    return $response;
}
add_filter( ‘heartbeat_received’, ‘wptuts_respond_to_browser’, 10, 3 );
add_filter( ‘heartbeat_nopriv_received’, ‘wptuts_respond_to_browser’, 10, 3 );

API Heartbeat также регулирует ритм в зависимости от активности пользователя. WordPress проверяет активность пользователя каждые 30 секунд. Если через 5 минут не было активности клавиатуры или мыши, удар сокращается до одного удара каждые сто секунд. Это делается независимо от того, что было установлено плагином.

В заключительной части этой серии мы создадим простой рабочий пример плагина с использованием нового API Heartbeat. Мы создадим плагин, который будет предоставлять пользователям «живые» обновления, когда пользователи входят и выходят из WordPress.