Basically, this package is port of official Laravel Echo javascript library. It helps subscribe to channels and listen for events broadcasted from your Laravel app.
API is same as official Echo package, so everything in Official documentation should work.
Three connectors available:
Getting started
socket.io
To use with socket.io, you need to install socket_io_client for your Flutter app.
In your pubspec.yaml file:
dependencies: ... socket_io_client: ^0.9.1 laravel_echo:
import socket_io_client
import 'package:socket_io_client/socket_io_client.dart' as IO;
usage
// Create echo instance Echo echo = new Echo({ 'broadcaster': 'socket.io', 'client': IO.io, }); // Listening public channel echo.channel('public-channel').listen('PublicEvent', (e) { print(e); }); // Listening private channel // Needs auth. See details how to authorize channel below in guides echo.private('private-channel').listen('PrivateEvent', (e) { print(e); }); // Listening presence channel // Needs auth. See details how to authorize channel below in guides echo.join('presence-channel') .here((users) { print(users); }).joining((user) { print(user); }).leaving((user) { print(user); }).listen('PresenceEvent', (e) { print(e); }); // Accessing socket instance echo.socket.on('connect', (_) => print('connected')); echo.socket.on('disconnect', (_) => print('disconnected'));
Pusher (NOT TESTED)
DONT USE THIS FOR NOW will look at Pusher in following weeks. Any contributions welcomed.
To use with Pusher, you need to install pusher for you Flutter app.
In your pubspec.yaml file:
dependencies: ... pusher: ^1.0.0 laravel_echo:
Pusher pusher = new Pusher('PUSHER_APP_ID', 'PUSHER_APP_KEY', 'PUSHER_APP_SECRET'); Echo echo = new Echo({ 'broadcaster': 'pusher', 'client': pusher, }); echo.channel('public-channel').listen('PublicEvent', (e) { print(e); }); socket.on('connect', (_) => print('connect')); socket.on('disconnect', (_) => print('disconnect'));
Guide
Options
| Option | Description | Default |
|---|---|---|
| auth | ||
| authEndpoint | /broadcasting/auth | |
| broadcaster | socket.io | |
| crsfToken | ||
| host | Socket host | http://localhost:6001 |
| namespace | Event namespace | App.Events |
| ... | Any other options, passed as socket params |
Authorize private channels
To authorize channel requests we use Laravel Passport
In our BroadcastServiceProvider.php we need to enable
Broadcast::routes(['middleware' => ['auth:api']]);
then, when creating Echo instance include Authorization header with bearer token
echo = new Echo({ 'broadcaster': 'socket.io', 'client': socket, 'auth': { 'headers': { 'Authorization': 'Bearer $token' } } });
Package by Kakajan SH
