receive qué application c# signalr signalr-hub

c# - qué - signalr linux



Diferencia de SignalR entre On y Subscribe de IHubProxy (2)

Odio necro, pero este hilo me lleva por un callejón oscuro. De hecho, es posible usar Extensiones reactivas (Rx) para manejar las suscripciones y en muchos casos esto es preferible ya que permite la composición.

Un artículo bastante decente que explica los conceptos básicos. Lamentablemente, el formato está un poco estropeado en los ejemplos de código, pero puede llegar allí. https://www.safaribooksonline.com/blog/2014/02/10/signalr-rx-framework/

¿Cuáles son las diferencias entre los métodos On y Subscribe disponibles en la interfaz IHubProxy ? ¿Cuándo debería uno usar uno sobre el otro?


Suscribirse es de nivel inferior y nunca deberías tener que usarlo. On proporciona sobrecargas más amigables que permiten una escritura fuerte de los argumentos. Aquí hay un ejemplo:

Servidor

public class MyHub { public void Send(string message, int age) { Clients.All.send(message, age); } }

Cliente

Patrón de suscripción

public void Main() { var connection = new HubConnection("http://myserver"); var proxy = connection.CreateHubProxy("MyHub"); var subscription = proxy.Subscribe("send"); subscription.Received += arguments => { string name = null; int age; if (arguments.Count > 0) { name = arguments[0].ToObject<string>(); } if (arguments.Count > 1) { age = arguments[1].ToObject<int>(); } Console.WriteLine("Name {0} and age {1}", name, age); }; }

Patrón "On"

public void Main() { var connection = new HubConnection("http://myserver"); var proxy = connection.CreateHubProxy("MyHub"); proxy.On<string, int>("send", (name, age) => { Console.WriteLine("Name {0} and age {1}", name, age); }); }