laravel_echo

Creator: coderz1093

Last updated:

Add to Cart

Description:

laravel echo

Laravel Echo for Flutter #
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:

✅ socket.io
✅ Pusher
✅ Null


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:
copied to clipboard
import socket_io_client
import 'package:socket_io_client/socket_io_client.dart' as IO;
copied to clipboard
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'));
copied to clipboard
Pusher #
To use with Pusher, you need to install flutter_pusher_client for you Flutter app.
In your pubspec.yaml file:
dependencies:
...
flutter_pusher_client: ^0.3.1
laravel_echo: ^0.2.5
copied to clipboard
import flutter_pusher_client
import 'package:flutter_pusher_client/flutter_pusher.dart';
copied to clipboard
PusherOptions options = PusherOptions(
host: '10.0.2.2',
port: 6001,
encrypted: false,
);
FlutterPusher pusher = FlutterPusher('app', options, enableLogging: true);

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'));
copied to clipboard
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']]);
copied to clipboard
then, when creating Echo instance include Authorization header with bearer token
echo = new Echo({
'broadcaster': 'socket.io',
'client': socket,
'auth': {
'headers': {
'Authorization': 'Bearer $token'
}
}
});
copied to clipboard
Sample backend #
Backend used for example app could be found at echo-server
Package by Kakajan SH

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.