J'utilise Signalr .Net Client dans mon application Console pour recevoir des messages du Signalr Hub qui est une application web séparée.
Mon application console se connecte correctement au concentrateur et ne reçoit que des messages du concentrateur. une fois . Ensuite, la méthode client dans le client Signalr .Net n'est pas appelée.
Une fois que j'arrête l'application console et que je l'exécute, elle reçoit à nouveau un message du concentrateur, une seule fois, et rien ne se passe.
Voici mon Code du moyeu
public override Task OnConnected()
{
try
{
var cType = Context.QueryString["type"];
var connectionId = Context.ConnectionId;
var connectedUserList = (from d in Users
where d.ClientType == cType
select d).ToList();
if (connectedUserList.Count > 0)
{
var conUser = connectedUserList.First<ConnectedUsers>();
conUser.ConnectionIds.Add(connectionId);
}
else
{
var newUser = new ConnectedUsers
{
ConnectionIds = new HashSet<string> {connectionId}
,
ClientType = cType
};
Users.Add(newUser);
}
}
catch (Exception ex)
{
).Error(ex);
}
return base.OnConnected();
}
Et ma connexion client .Net
static void Main(string[] args)
{
SignalrHandler();
Console.ReadLine();
}
public static async void SignalrHandler()
{
var url = ConfigurationSettings.AppSettings["Url"] ?? @"http://localhost:1010/";
var querystringData = new Dictionary<string, string> { { "type", "WIN" } };
_hubConnection = new HubConnection(url, querystringData);
MarcolinMainProxy = _hubConnection.CreateHubProxy("MainHub");
MarcolinMainProxy.On<string>("sendAlert", type => InvokeMethod(type));
await _hubConnection.Start();
}
Méthode du client
private static void InvokeMethod(string type)
{
Console.WriteLine(String.Format("Recieved Message From Server On :{0}",System.DateTime.Now.ToString()));
Console.WriteLine("Message Received");
Console.ReadLine();
}
Et cela se produit lorsque j'utilise une méthode Invoke avec la ligne suivante
MarcolinMainProxy.On<string>("sendAlert", type => InvokeMethod(type));
Et quand j'utilise la ligne suivante, cela fonctionne
MarcolinMainProxy.On<string>("sendAlert", stock => Console.WriteLine("Symbol {0} Price {1}", "sd", "sdde"));