laravel_echo 0.2.9 copy "laravel_echo: ^0.2.9" to clipboard
laravel_echo: ^0.2.9 copied to clipboard

Port of official Laravel Echo package for your Flutter apps.

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:

Screen Shot 2019-03-17 at 9 37 50 PM

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

68
likes
30
points
1.22k
downloads

Publisher

unverified uploader

Weekly Downloads

2024.09.13 - 2025.03.28

Port of official Laravel Echo package for your Flutter apps.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter

More

Packages that depend on laravel_echo