Improved Laravel echo package
Tags: flutter, laravel, dart
Published: 2023-09-26 09:49:41

[laravel_echo_null](https://github.com/AbdoPrDZ/laravel_echo_null)
This Package is the improved version of the original package "laravel_echo", with some modifications and features.

# laravel_echo_null

## Getting started

### Important information before using

- The `laravel_echo_null` package relies on the following packages:

  | Package                    | Version   | URL Source                                                             |
  | -------------------------- | --------- | ---------------------------------------------------------------------- |
  | socket_io_client           | 2.0.2     | [pub.dev](https://pub.dev/packages/socket_io_client)                   |
  | pusher_client_fixed        | 0.0.2     | [pub.dev](https://pub.dev/packages/pusher_client_fixed)                |
  | fixed-laravel-echo-server  | 0.0.2     | [npm](https://www.npmjs.com/package/@abdopr/fixed-laravel-echo-server) |

  To include these packages in your project, add the following dependencies to your `pubspec.yaml` file:

  ```yaml
  dependencies:
    socket_io_client: ^2.0.2
    pusher_client_fixed: ^0.0.2
  ```

  Please note that the `laravel_echo_null` package requires the `socket_io_client` package at version 2.0.2. Additionally, to ensure compatibility with the package, use the `fixed-laravel-echo-server` version 0.0.1, which is available on npm. You can install it globally by running the following command:

  ```bash
  npm i -g @abdopr/fixed-laravel-echo-server
  ```

  For more information, please refer to the [official documentation](https://pub.dev/packages/socket_io_client) of `fixed-laravel-echo-server`.

  Make sure to add these dependencies and follow the instructions to include them properly in your project  

### Importing

- ```dart
  import 'package:laravel_echo_null/laravel_echo_null.dart';
  ```

### Initializing

- Initialization using connector:

  ```dart
  //// Socket IO ////
  import 'package:socket_io_client/socket_io_client.dart' as IO;

  Echo<IO.Socket, SocketIoChannel> echo = Echo<IO.Socket, SocketIoChannel>(SocketIoConnector(
    'http://localhost:6001', // String: host
    nameSpace: 'nameSpace', // String?: namespace
    autoConnect: false, // bool: client connection automatically
    authHeaders: {
      'Authorization': 'Bearer token'
    },
    moreOptions: {// Map: more io options
      'transports': ['websocket']
    },
  ));

  ///// Pusher ////
  import 'package:pusher_client_fixed/pusher_client_fixed.dart' as PUSHER;

  Echo<PUSHER.PusherClient, PusherChannel> echo = Echo<PUSHER.PusherClient, PusherChannel>(PusherConnector(
    'PUSHER_APP_KEY',
    authEndPoint: 'http://localhost/broadcasting/auth', // String?: auth host
    authHeaders: { // authenticate headers
      'Authorization': 'Bearer $token',
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
    cluster: 'PUSHER_CLUSTER', // String?: pusher cluster
    host: 'localhost',
    wsPort: 6001,
    encrypted: true,
    activityTimeout: 120000,
    pongTimeout: 30000,
    maxReconnectionAttempts: 6,
    maxReconnectGapInSeconds: 30,
    enableLogging: true,
    autoConnect: false, // bool: client connection automatically
    nameSpace: 'nameSpace',
  ));
  ```

- Easy initialization:

  ```dart
  //// Socket IO ////
  import 'package:socket_io_client/socket_io_client.dart';

  Echo<IO.Socket, SocketIoChannel> echo = Echo.socket(
    'http://localhost:6001', // String: host
    nameSpace: 'nameSpace', // String?: namespace
    autoConnect: false, // bool: client connection automatically
    authHeaders: {
      'Authorization': 'Bearer token'
    },
    moreOptions: {// Map: more io options
      'transports': ['websocket']
    },
  );

  ///// Pusher ////
  import 'package:pusher_client_fixed/pusher_client_fixed.dart';

  Echo<PUSHER.PusherClient, PusherChannel> echo = Echo.pusher(
    'PUSHER_APP_KEY',
    authEndPoint: 'http://localhost/broadcasting/auth', // String?: auth host
    authHeaders: { // authenticate headers
      'Authorization': 'Bearer $token',
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
    cluster: 'PUSHER_CLUSTER', // String?: pusher cluster
    host: 'localhost',
    wsPort: 6001,
    encrypted: true,
    activityTimeout: 120000,
    pongTimeout: 30000,
    maxReconnectionAttempts: 6,
    maxReconnectGapInSeconds: 30,
    enableLogging: true,
    autoConnect: false, // bool: client connection automatically
    nameSpace: 'nameSpace',
  );

  ```

### Channels

- ```dart
  // public channel
  Channel publicChannel = echo.channel('my-channel');
  publicChannel.listen('MyEvent', (data) {
    print(data);
  });

  // private channel
  Channel privateChannel = echo.private('my-channel.1')
  privateChannel.listen('MyEvent', (data) {
    print(data);
  });

  // presence channel
  PresenceChannel presenceChannel = echo.join('presence-channel');
  presenceChannel.listen((data) {
    print(data);
  });
  ```

----------------------------------------------------------------------------------------------------------------------------

## `Note: This Package is the improved version of the original package "laravel_echo", with some modifications and features`

----------------------------------------------------------------------------------------------------------------------------

## Powered By Abdo-Pr

- GitHub Profile: <https://github.com/AbdoPrDZ>
- WhatsApp + Telegram (+213778185797)
- Facebook Account: <https://www.facebook.com/profile.php?id=100008024286034>