Exemple d'application console SignalR
Dans cet article, nous explorerons un exemple d'application console utilisant SignalR pour communiquer avec un .NET hub.
Configuration SignalR
Avant de continuer, assurez-vous que les packages SignalR suivants sont installés dans les applications serveur et client via NuGet :
Serveur Implémentation
Créez un serveur d'application de console avec le code suivant :
using System; using SignalR.Hubs; namespace SignalR.Hosting.Self.Samples { class Program { static void Main(string[] args) { string url = "http://127.0.0.1:8088/"; var server = new Server(url); server.MapHubs(); server.Start(); Console.WriteLine("Server running on {0}", url); while (true) { ConsoleKeyInfo ki = Console.ReadKey(true); if (ki.Key == ConsoleKey.X) { break; } } } [HubName("CustomHub")] public class MyHub : Hub { public string Send(string message) { return message; } public void DoSomething(string param) { Clients.addMessage(param); } } } }
Implémentation du client
Dans un client d'application de console distinct :
using System; using SignalR.Client.Hubs; namespace SignalRConsoleApp { internal class Program { private static void Main(string[] args) { var connection = new HubConnection("http://127.0.0.1:8088/"); var myHub = connection.CreateHubProxy("CustomHub"); connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("Error opening connection: {0}", task.Exception.GetBaseException()); } else { Console.WriteLine("Connected"); } }).Wait(); myHub.Invoke<string>("Send", "HELLO World ").ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("Error calling Send: {0}", task.Exception.GetBaseException()); } else { Console.WriteLine(task.Result); } }); myHub.On<string>("addMessage", param => { Console.WriteLine(param); }); myHub.Invoke<string>("DoSomething", "I'm doing something!!!").Wait(); Console.Read(); connection.Stop(); } } }
Problèmes et Solutions
Attribution d'un nom de hub
Si vous rencontrez des problèmes avec un nom de hub spécifique (« test ») dans votre code côté serveur (par exemple, [ HubName("test")]), assurez-vous qu'il n'entre pas en conflit avec l'attribut HubName dans le code côté client. Le nom du hub utilisé à la fois sur le serveur et sur le client doit correspondre pour une communication correcte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!