Polling
Livewire offers a directive called wire:poll
that, when added to an element, will refresh the component every 2s
.
Polling for changes over Ajax is a lightweight, simpler alternative to something like Laravel Echo, Pusher, or any WebSocket strategy.
<div wire:poll>
Current time: {{ now() }}
</div>
You can customize the frequency by passing a directive modifier like 750ms
. For example:
<div wire:poll.750ms>
Current time: {{ now() }}
</div>
You can also specify a specific action to fire on the polling interval by passing a value to wire:poll
:
<div wire:poll="foo">
Current time: {{ now() }}
</div>
Now, the foo
method on the component will be called every 2 seconds.
Polling in the background
Livewire reduces polling when the browser tab is in the background so that it doesn't bog down the server with ajax requests unnecessarily. Only about 5% of the expected polling requests are kept.
If you'd like to keep polling at the normal rate even while the tab is in the background, you can use the keep-alive
modifier:
<div wire:poll.keep-alive>
Current time: {{ now() }}
</div>
← Previous Topic
Loading States
Next Topic →