WP_HTTP_Polling_Sync_Server::handle_request( WP_REST_Request $request ): WP_REST_Response|WP_Error

In this article

Handles request: stores sync updates and awareness data, and returns updates the client is missing.

Parameters

$requestWP_REST_Requestrequired
The REST request.

Return

WP_REST_Response|WP_Error Response object or error.

Source

public function handle_request( WP_REST_Request $request ) {
	$rooms    = $request['rooms'];
	$response = array(
		'rooms' => array(),
	);

	foreach ( $rooms as $room_request ) {
		$awareness = $room_request['awareness'];
		$client_id = $room_request['client_id'];
		$cursor    = $room_request['after'];
		$room      = $room_request['room'];

		// Merge awareness state.
		$merged_awareness = $this->process_awareness_update( $room, $client_id, $awareness );

		// The lowest client ID is nominated to perform compaction when needed.
		$is_compactor = false;
		if ( count( $merged_awareness ) > 0 ) {
			$is_compactor = min( array_keys( $merged_awareness ) ) === $client_id;
		}

		// Process each update according to its type.
		foreach ( $room_request['updates'] as $update ) {
			$result = $this->process_sync_update( $room, $client_id, $cursor, $update );
			if ( is_wp_error( $result ) ) {
				return $result;
			}
		}

		// Get updates for this client.
		$room_response              = $this->get_updates( $room, $client_id, $cursor, $is_compactor );
		$room_response['awareness'] = $merged_awareness;

		$response['rooms'][] = $room_response;
	}

	return new WP_REST_Response( $response, 200 );
}

Changelog

VersionDescription
7.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.