Exemple d’application SignalR Console

Existe-t-il un petit exemple d’application console ou winform utilisant signalR pour envoyer un message à un hub .net? J’ai essayé les exemples .net et j’ai regardé le wiki, mais cela n’a pas de sens pour moi la relation entre le hub (.net) et le client (application console) (impossible d’en trouver un exemple). L’application nécessite-t-elle simplement l’adresse et le nom du concentrateur pour se connecter?

Si quelqu’un pouvait fournir une petite information de code montrant l’application se connectant à un concentrateur et envoyant “Hello World” ou quelque chose que le hub .net reçoit?.

PS J’ai un exemple de discussion de concentrateur standard qui fonctionne bien, si j’essaie d’atsortingbuer un nom de concentrateur en Cs à celui-ci, il cesse de fonctionner, par exemple [HubName (“test”)], connaissez-vous la raison?

Merci.

Code d’application de la console en cours.

static void Main(ssortingng[] args) { //Set connection var connection = new HubConnection("http://localhost:41627/"); //Make proxy to hub based on hub name on server var myHub = connection.CreateProxy("chat"); //Start connection connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException()); } else { Console.WriteLine("Connected"); } }).Wait(); //connection.StateChanged += connection_StateChanged; myHub.Invoke("Send", "HELLO World ").ContinueWith(task => { if(task.IsFaulted) { Console.WriteLine("There was an error calling send: {0}",task.Exception.GetBaseException()); } else { Console.WriteLine("Send Complete."); } }); } 

Serveur Hub (espace de travail de projet différent)

 public class Chat : Hub { public void Send(ssortingng message) { // Call the addMessage method on all clients Clients.addMessage(message); } } 

Infos Wiki pour cela est http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-net-client

Tout d’abord, vous devez installer SignalR.Host.Self sur l’application serveur et SignalR.Client sur votre application client par nuget:

PM> Install-Package SignalR.Hosting.Self -Version 0.5.2

PM> Package d’installation Microsoft.AspNet.SignalR.Client

Ajoutez ensuite le code suivant à vos projets;)

(exécuter les projets en tant qu’administrateur)

Application de la console du serveur:

 using System; using SignalR.Hubs; namespace SignalR.Hosting.Self.Samples { class Program { static void Main(ssortingng[] args) { ssortingng url = "http://127.0.0.1:8088/"; var server = new Server(url); // Map the default hub url (/signalr) server.MapHubs(); // Start the server server.Start(); Console.WriteLine("Server running on {0}", url); // Keep going until somebody hits 'x' while (true) { ConsoleKeyInfo ki = Console.ReadKey(true); if (ki.Key == ConsoleKey.X) { break; } } } [HubName("CustomHub")] public class MyHub : Hub { public ssortingng Send(ssortingng message) { return message; } public void DoSomething(ssortingng param) { Clients.addMessage(param); } } } } 

Application console client:

 using System; using SignalR.Client.Hubs; namespace SignalRConsoleApp { internal class Program { private static void Main(ssortingng[] args) { //Set connection var connection = new HubConnection("http://127.0.0.1:8088/"); //Make proxy to hub based on hub name on server var myHub = connection.CreateHubProxy("CustomHub"); //Start connection connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException()); } else { Console.WriteLine("Connected"); } }).Wait(); myHub.Invoke("Send", "HELLO World ").ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error calling send: {0}", task.Exception.GetBaseException()); } else { Console.WriteLine(task.Result); } }); myHub.On("addMessage", param => { Console.WriteLine(param); }); myHub.Invoke("DoSomething", "I'm doing something!!!").Wait(); Console.Read(); connection.Stop(); } } } 

Exemple pour SignalR 2.2.1 (mai 2017)

Serveur

Package d’installation Microsoft.AspNet.SignalR.SelfHost -Version 2.2.1

 [assembly: OwinStartup(typeof(Program.Startup))] namespace ConsoleApplication116_SignalRServer { class Program { static IDisposable SignalR; static void Main(ssortingng[] args) { ssortingng url = "http://127.0.0.1:8088"; SignalR = WebApp.Start(url); Console.ReadKey(); } public class Startup { public void Configuration(IAppBuilder app) { app.UseCors(CorsOptions.AllowAll); app.MapSignalR(); } } [HubName("MyHub")] public class MyHub : Hub { public void Send(ssortingng name, ssortingng message) { Clients.All.addMessage(name, message); } } } } 

Client

(presque la même réponse que Mehrdad Bahrainy)

Package d’installation Microsoft.AspNet.SignalR.Client -Version 2.2.1

 namespace ConsoleApplication116_SignalRClient { class Program { private static void Main(ssortingng[] args) { var connection = new HubConnection("http://127.0.0.1:8088/"); var myHub = connection.CreateHubProxy("MyHub"); Console.WriteLine("Enter your name"); ssortingng name = Console.ReadLine(); connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException()); } else { Console.WriteLine("Connected"); myHub.On("addMessage", (s1, s2) => { Console.WriteLine(s1 + ": " + s2); }); while (true) { ssortingng message = Console.ReadLine(); if (ssortingng.IsNullOrEmpty(message)) { break; } myHub.Invoke("Send", name, message).ContinueWith(task1 => { if (task1.IsFaulted) { Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException()); } else { Console.WriteLine(task1.Result); } }); } } }).Wait(); Console.Read(); connection.Stop(); } } } 

L’hôte autonome utilise maintenant Owin. Checkout http://www.asp.net/signalr/overview/signalr-20/getting-startedwith-signalr-20/tutorial-signalr-20-self-host pour configurer le serveur. C’est compatible avec le code client ci-dessus.