Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Notification Bundle

Notification Bundle Laravel Package

ack/notification-bundle

Symfony bundle providing a Redis + Node.js (socket.io) pub/sub notification architecture. Render notifications via Twig, publish to specific user IDs or everyone, track online users in Redis, and push real-time “notification” events to connected clients.

View on GitHub
Deep Wiki
Context7

Symfony notification bundle

Frequently asked questions about Notification Bundle
Can I use AckNotificationBundle directly in Laravel, or is it strictly for Symfony?
This bundle is designed for Symfony, but you can adapt it for Laravel by creating a service provider to bridge Symfony’s DI container with Laravel’s IoC. The core Redis Pub/Sub logic is language-agnostic, so you’d need to wrap the notifier service and handle templating (Blade ↔ Twig) separately. Expect ~2–4 hours of setup for a basic integration.
How do I replace the Node.js/Socket.IO server with Laravel Echo or native WebSockets?
Replace the `server.js` with Laravel Echo (Pusher/Ably) or a raw WebSocket server like Ratchet. The bundle’s Redis Pub/Sub logic remains unchanged—just modify the client-side connection to use Echo’s `Pusher` or a WebSocket endpoint. Example: `window.Echo.channel('notifications').listen('notification', (data) => { ... })`.
What Laravel versions does AckNotificationBundle support, or do I need a fork?
The bundle was last updated for Symfony 2/3 (2016) and lacks Laravel-specific docs. You’ll need to fork it to add Laravel support, updating dependencies (e.g., Symfony 5+, Redis 6+) and creating a Laravel service provider. The core Pub/Sub logic is version-agnostic, but templating and DI require adaptation.
How do I handle Blade templates instead of Twig in Laravel?
Option 1: Use the `twig/twig` package to render Blade templates via Twig (adds ~5MB overhead). Option 2: Pre-render Blade templates to strings before publishing: `$content = Blade::render('emails.notification', ['data' => $params]); $notifier->notify($content, [$userId])`. Avoid mixing templating engines in production.
What’s the fallback if Redis or WebSockets fail? Can I send emails/SMS instead?
The bundle doesn’t include fallback logic by default, but you can extend it. Listen for Redis connection errors in your Laravel service provider and queue notifications to a database table (e.g., `notifications`) for later email/SMS delivery. Use Laravel’s `queue:work` to process failed notifications.
Is AckNotificationBundle scalable for high-traffic apps, or should I use Laravel’s database queues?
Redis Pub/Sub is low-latency and scales horizontally, but single Redis instances can become bottlenecks. For high traffic, use Redis Cluster or Sentinel for failover. If scalability is a concern, consider Laravel’s database queues (e.g., `database:table`) for simpler setups, though they lack real-time delivery.
How do I track online users in Laravel instead of Redis hashes?
Replace the Redis hash logic with Laravel’s `online` table (via `laravel-online` package) or a custom `last_seen_at` column in the `users` table. Update the socket ID mapping in your Laravel service provider to use the `online` package’s API instead of Redis hashes.
Are there alternatives to AckNotificationBundle for Laravel real-time notifications?
Yes: **Laravel Echo + Pusher/Ably** (simplest), **beyondcode/laravel-websockets** (self-hosted), or **spatie/laravel-activitylog** (for event-based notifications). For Redis Pub/Sub, consider **predis/predis** + custom WebSocket logic. AckNotificationBundle’s strength is its pre-built architecture, but alternatives may fit Laravel’s ecosystem better.
How do I test the notification system in Laravel without a real Redis server?
Use Laravel’s `Redis` facade with a mock driver (e.g., `predis/mock`) or Dockerized Redis for CI/CD. For client-side testing, mock Socket.IO events with Jest or Laravel Dusk: `socket.emit.mockImplementation(() => {})`. Test edge cases like offline users, duplicate notifications, and Redis disconnections.
What’s the production deployment process for the Node.js server in Laravel?
Deploy the Node.js server alongside your Laravel app (e.g., on the same server or a separate VM). Use PM2 for process management: `pm2 start server.js --name ack-notifications`. Configure Redis to persist data (`save 900 1`) and monitor with `pm2 logs`. For high availability, run multiple Node.js instances behind a load balancer.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle