Dart/Flutter client for Laravel Echo via Socket.IO.
To use this plugin, add flutter_laravel_echo_client as a dependency in your pubspec.yaml file.
Import the library.
import 'package:flutter_laravel_echo_client/laravel_echo_client.dart';
Usage
import 'package:flutter_laravel_echo_client/laravel_echo_client.dart';
final client = LaravelEchoSocketClient(
  SocketConfig(
    host: Uri.parse('https://echo.example.com'),
    token: '<ACCESS_TOKEN>',
    authHeadersProvider: () => {'Authorization': 'Bearer <ACCESS_TOKEN>'},
  ),
);
await client.connect();
final chat = client.private('chat.42');
chat.listen('.chat.message', (event, data) {
  print('New message: $data');
});
chat.whisper('typing', {'is_typing': true});
await chat.unsubscribe();
client.leave('chat.42');
Basic methods
| Method | Description | 
|---|---|
| connect() | Connect to the server | 
| disconnect() | Disconnect | 
| updateAuthToken(token) | Refresh token | 
| channel(name) | Public channel | 
| private(name) | Private channel | 
| presence(name) | Presence channel | 
| leave(name) | Leave channel | 
| stopListening(event) | Remove event handler | 
| unsubscribe() | Unsubscribe completely | 
Example
class EchoInstance extends ChangeNotifier {
  EchoInstance(this.tokenStorage);
  final TokenStorage tokenStorage;
  LaravelEchoSocketClient? _client;
  String? _userId;
  LaravelEchoSocketClient? get client => _client;
  void init() {
    final token = tokenStorage.value!;
    if (_userId != null && token.userId != _userId) _disconnect();
    if (_client != null) return;
    _userId = token.userId;
    _client = LaravelEchoSocketClient(
      SocketConfig(
        host: Uri.parse(ApiConfig.BASE_ECHO_URL),
        token: token.accessToken,
        authHeadersProvider: () => {'Authorization': 'Bearer ${token.accessToken}'},
      ),
    )..connect();
    notifyListeners();
  }
  void updateTokenIfNeeded() {
    final t = tokenStorage.value!;
    _client?.updateAuthToken(t.accessToken);
  }
  void disconnect() => _disconnect();
  void _disconnect() {
    _client?.disconnect();
    _client = null;
    _userId = null;
  }
}
Description
				
					Languages
				
				
								
								
									Dart
								
								94.5%
							
						
							
								
								
									Swift
								
								4.4%
							
						
							
								
								
									Kotlin
								
								0.9%
							
						
							
								
								
									Objective-C
								
								0.2%