Ein Flutter-Client für ASP.NET Core SignalR. Der Client kann Server-Hub-Funktionen aufrufen und Methodenaufrufe empfangen, die vom Server ausgegeben werden.
Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Flutter-Client für ASP.NET Core SignalR, der die Echtzeitkommunikation zwischen Flutter-Anwendungen und .NET Core-Backends ermöglicht. Er unterstützt das Aufrufen von Server-Hub-Methoden und das Empfangen von Methodenaufrufen vom Server, wodurch er ideal für Live-Updates, Chat-Anwendungen und kooperative Tools ist. Das Paket funktioniert auf Android, iOS, macOS, Windows und Linux und gewährleistet eine breite Plattformkompatibilität. Auf dem SignalR-Protokoll basierend, bietet es effiziente, latenzarme Nachrichtenübertragung mit automatischer Wiederherstellung und Fallback-Mechanismen.
Anwendungsfälle
Echtzeit-Chats-Anwendungen
Live-Daten-Dashboards
Kooperationseditoren
Überwachung von IoT-Geräten
Push-Benachrichtigungen
Hauptmerkmale
Zweirichtungskommunikation
Automatische Wiederherstellung der Verbindung
Plattformübergreifende Unterstützung
Server-Methode-Aufruf
Client-Ereignishandling
Geeignet für
Entwickler von Echtzeit-Apps
Backend-integrierte Flutter-Projekte
Anwendungen, die Live-Updates erfordern
Teams, die ASP.NET Core SignalR verwenden
Anforderungen an die Low-Latency-Kommunikation
Hinweise
Erfordert einen kompatiblen ASP.NET Core SignalR-Server
Netzwerkstabilität beeinflusst die Leistung
Authentifizierungseinstellung für gesicherte Hubs erforderlich
Eingeschränkte Dokumentation im Vergleich zu Native-Bibliotheken
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
signalr_client
A Flutter SignalR Client for ASP.NET Core.
ASP.NET Core SignalR is an open-source library that simplifies adding real-time web functionality to apps. Real-time web functionality enables server-side code to push content to clients instantly.
Tested with ASP.NET Core 3.1 & ASP .NET Core 6
The client is able to invoke server side hub functions (including streaming functions) and to receive method invocations issued by the server. It also supports the auto-reconnect feature.
The client supports the following transport protocols:
Important Note: if you are experiencing issues (for example not receiving message callback) with the latest version, please give a try to older version as signalr_netcore: 0.1.7+2-nullsafety.3 but bear in mind that this version does not support auto reconnect functionalities and need to be handled manually.
Usage
Let's demo some basic usages:
1. Create a hub connection:
// Import the library.import'package:signalr_netcore/signalr_client.dart';
// The location of the SignalR Server.final serverUrl = "192.168.10.50:51001";
// Creates the connection by using the HubConnectionBuilder.final hubConnection = HubConnectionBuilder().withUrl(serverUrl).build();
// When the connection is closed, print out a message to the console.final hubConnection.onclose( (error) => print("Connection Closed"));
// Import theses libraries.import'package:logging/logging.dart';
import'package:signalr_netcore/signalr_client.dart';
// Configer the loggingLogger.root.level = Level.ALL;
// Writes the log messages to the consoleLogger.root.onRecord.listen((LogRecord rec) {
print('${rec.level.name}: ${rec.time}: ${rec.message}');
});
// If you want only to log out the message for the higer level hub protocol:final hubProtLogger = Logger("SignalR - hub");
// If youn want to also to log out transport messages:final transportProtLogger = Logger("SignalR - transport");
// The location of the SignalR Server.final serverUrl = "192.168.10.50:51001";
final connectionOptions = HttpConnectionOptionsfinal httpOptions = newHttpConnectionOptions(logger: transportProtLogger);
//final httpOptions = new HttpConnectionOptions(logger: transportProtLogger, transport: HttpTransportType.WebSockets); // default transport type.//final httpOptions = new HttpConnectionOptions(logger: transportProtLogger, transport: HttpTransportType.ServerSentEvents);//final httpOptions = new HttpConnectionOptions(logger: transportProtLogger, transport: HttpTransportType.LongPolling);// If you need to authorize the Hub connection than provide a an async callback function that returns // the token string (see AccessTokenFactory typdef) and assigned it to the accessTokenFactory parameter:// final httpOptions = new HttpConnectionOptions( .... accessTokenFactory: () async => await getAccessToken() ); // Creates the connection by using the HubConnectionBuilder.final hubConnection = HubConnectionBuilder().withUrl(serverUrl, options: httpOptions).configureLogging(hubProtLogger).build();
// When the connection is closed, print out a message to the console.final hubConnection.onclose( (error) => print("Connection Closed"));
2. Connect to a Hub:
Calling following method starts handshaking and connects the client to SignalR server
final result = await hubConnection.invoke("MethodOneSimpleParameterSimpleReturnValue", args: <Object>["ParameterValue"]);
logger.log(LogLevel.Information, "Result: '$result");
4. Calling a client function:
Assuming the server calls a function "aClientProvidedFunction":
hubConnection.on("aClientProvidedFunction", _handleAClientProvidedFunction);
// To unregister the function use:// a) to unregister a specific implementation:// hubConnection.off("aClientProvidedFunction", method: _handleServerInvokeMethodNoParametersNoReturnValue);// b) to unregister all implementations:// hubConnection.off("aClientProvidedFunction");
...
void_handleAClientProvidedFunction(List<Object> parameters) {
logger.log(LogLevel.Information, "Server invoked the method");
}
5. Using Msgpack for serialization
The Hub should be configured to use the msgpack protocol in both the client and server
Client
import'package:signalr_netcore/msgpack_hub_protocol.dart';
_hubConnection = HubConnectionBuilder()
.withUrl(_serverUrl, options: httpOptions)
/* Configure the Hub with msgpack protocol */
.withHubProtocol(MessagePackHubProtocol())
.withAutomaticReconnect()
.configureLogging(logger)
.build();
Server
Add the following packge to your ASP NET core project
Microsoft.AspNetCore.SignalR.Protocols.MessagePack
public void ConfigureServices(IServiceCollection services)
{
// Configure the hub to use msgpack protocol
services.AddSignalR().AddMessagePackProtocol();
}
A note about the parameter types
All function parameters and return values are serialized/deserialized into/from JSON by using the dart:convert package (json.endcode/json.decode). Make sure that you:
use only simple parameter types
or
use objects that implements toJson() since that method is used by the dart:convert package to serialize an object.