messenger's
API. No authentication routes/system will be setup for you.NotifyManager.js
uses laravel echo, with the pusher-js
library. views
, you may wish to edit them to fit your needs.react
.composer require rtippin/messenger-ui
php artisan messenger:ui:publish
php artisan vendor:publish --tag=messenger-ui.assets --force
Default:
'site_name' => env('MESSENGER_SITE_NAME', 'Messenger'),
'websocket' => [
'pusher' => env('MESSENGER_SOCKET_PUSHER', false),
'host' => env('MESSENGER_SOCKET_HOST', 'localhost'),
'auth_endpoint' => env('MESSENGER_SOCKET_AUTH_ENDPOINT', '/api/broadcasting/auth'),
'key' => env('MESSENGER_SOCKET_KEY'),
'port' => env('MESSENGER_SOCKET_PORT', 6001),
'use_tsl' => env('MESSENGER_SOCKET_TLS', false),
'cluster' => env('MESSENGER_SOCKET_CLUSTER'),
],
'routing' => [
'domain' => null,
'prefix' => 'messenger',
'middleware' => ['web', 'auth', 'messenger.provider'],
'invite_middleware' => ['web', 'messenger.provider'],
],
site_name
is used in our views to inject the name in the navbar.websocket
:
pusher.com
, you need to set pusher
to true
, add in your cluster
, and your key
.laravel-websockets
, you leave pusher
to false
, ignore cluster
, and set your host
, port
, and key
.auth_endpoint
is for your laravel's backend to authorize access to our messenger channels. The default messenger.php
config prefixes the channel routes with api
, hence our default config above uses /api/broadcasting/auth
when not set.routing
you may choose your desired endpoint domain, prefix and middleware.
messenger.provider
middleware is included with messenger
and simply sets the active messenger provider by grabbing the authenticated user from $request->user()
.composer require pusher/pusher-php-server
.env
variables:Default broadcasting.php
config
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => false,
],
],
.env
keys for both pusher and our UI
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=YourPusherId
PUSHER_APP_KEY=YourPusherKey
PUSHER_APP_SECRET=YourPusherSecret
PUSHER_APP_CLUSTER=YourPusherCluster
MESSENGER_SOCKET_PUSHER=true
MESSENGER_SOCKET_KEY="${PUSHER_APP_KEY}"
MESSENGER_SOCKET_CLUSTER="${PUSHER_APP_CLUSTER}"
client events
within your pusher account if you want our client to client events enabled.beyondcode
if you are doing a fresh installation.composer require beyondcode/laravel-websockets "^1.12"
.env
variables and update the default pusher config:Updated broadcasting.php
config per beyondcode's
documentation
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
'host' => 'localhost',
'port' => 6001,
'scheme' => 'http'
],
],
.env
keys for both laravel-websockets
and our UI
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=MakeYourID
PUSHER_APP_KEY=MakeYourKey
PUSHER_APP_SECRET=MakeYourSecret
MESSENGER_SOCKET_HOST=localhost
MESSENGER_SOCKET_KEY="${PUSHER_APP_KEY}"
php artisan websockets:serve
. Be sure to enable client events
in your laravel-websockets
config if you want our client to client events enabled.