PHPackages                             pdmfc/nova-echo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. pdmfc/nova-echo

ActiveLibrary[API Development](/categories/api)

pdmfc/nova-echo
===============

Adds Laravel Echo with your broadcast configuration to your Laravel Nova app

03JavaScript

Since Mar 16Pushed 6mo agoCompare

[ Source](https://github.com/pdmfc/nova-echo)[ Packagist](https://packagist.org/packages/pdmfc/nova-echo)[ RSS](/packages/pdmfc-nova-echo/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Nova Echo
=========

[](#nova-echo)

Adds Laravel Echo with your broadcast configuration to your Laravel Nova app.

Installation
------------

[](#installation)

By using Nova Echo, we have a readily configured Laravel Echo instance in our JS.

for broadcasting/receiving using PDM Pusher:

- [Pusher PDM](https://pusher.pdmfc.com)

You can find instructions about setting up broadcasting in Laravel using the [official documentation](https://laravel.com/docs/5.7/broadcasting).

Once you have this set up in your Nova app, you can install this package in composer.json

```
"repositories": {
        {
            "type": "vcs",
            "url": "https://gitlab.pdmfc.com/pdm-laravel/nova-echo.git"
        }
},
"require": {
        "pdmfc/nova-echo": "*"
}
```

You will need to change 'pusher' broadcasting config.

```
 'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => null,
            'app_id' => env('PUSHER_APP_ID'),
            'auth_endpoint' => env('PUSHER_AUTH_ENDPOINT', '/broadcasting/auth'),
            'options' => [
                'host' => env('PUSHER_HOST'),
                'schema' => 'https',
                'curl_options' => [
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_POSTREDIR => 3
                ]
            ],
        ],
```

changes in .env:

```
PUSHER_HOST=pusher.pdmfc.com
PUSHER_PORT=6001
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
MIX_PUSHER_HOST="${PUSHER_HOST}"
MIX_PUSHER_PORT="${PUSHER_PORT}"
MIX_PUSHER_SCHEME=https
```

You must generate the app\_id and app\_key in .

You will then need to override Nova's `layout.blade.php`. Create a layout file `resources/views/vendor/nova/layout.blade.php` and copy the contents from `vendor/laravel/nova/resources/views/layout.blade.php`.

Include Nova Echo's blade file in the Nova layout. This blade file contains `meta` tags with your broadcast configuration.

```
// file: resources/views/vendor/nova/layout.blade.php

DOCTYPE html>

  @include('pdmfc-nova-echo::meta')

  ...

```

Usage
-----

[](#usage)

Nova Echo instantiates `Echo` and makes it available throughout your Nova app. You can access your `Echo` object through

```
window.Echo
```

By default, this `Echo` instance already subscribes to the logged in user's private channel, which by default would be the namespace of your app's user object, ie.

You can access and attach listeners to this user's private channel through

```
window.userPrivateChannel
```

To authenticate the user through this channel, make sure you have your `BroadcastServiceProvider` available with `Broadcast::routes()` declared. You'll also need to define access through your `route/channels.php` file, ie:

```
// file: routes/channels.php

Broadcast::channel(config('broadcasting.connections.pusher.app_id').'-users.{id}', function ($user, $id) {
    return (int)$user->id === (int)$id;
});
```

You can override the `receivesBroadcastNotificationsOn` to use a different channel name.

```
class User extends Authenticatable
{
    use Notifiable;

    ...

    /**
     * The channels the user receives notification broadcasts on.
     *
     * @return string
     */
    public function receivesBroadcastNotificationsOn()
    {
        return config('broadcasting.connections.pusher.app_id').'-users.' . $this->id;
    }
}
```

Credits
-------

[](#credits)

- [Chris Bautista](https://github.com/chrisbjr)
- [CoreProc](https://github.com/coreproc)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance46

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/58304323?v=4)[PDMFC](/maintainers/pdmfc)[@pdmfc](https://github.com/pdmfc)

### Embed Badge

![Health badge](/badges/pdmfc-nova-echo/health.svg)

```
[![Health](https://phpackages.com/badges/pdmfc-nova-echo/health.svg)](https://phpackages.com/packages/pdmfc-nova-echo)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k13](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
