Я пытаюсь вызвать метод консольного приложения из контекста SignalR HUB, который не работает.
var hubContext = GlobalHost.ConnectionManager.GetHubContext<Hubsfile.MyHub>();
hubContext.Clients.All.SendControl(machine, code);
Эта (еще одна функция ниже) работает нормально, так как клиент - это сама веб-страница (я думаю).
hubContext.Clients.All.registerCard(ip, данные);
Но когда я пытаюсь вызвать метод из другого клиента (консольного приложения), контекст концентратора не вызывает его.
Контекст концентратора не работает для клиентов за пределами приложения концентратора.
Редактировать:
Метод в SignalR HUB:
public void SendControlKeys(string machine, string code)
{
Clients.All.SendControl(machine, code);
}
Метод в консольном клиенте:
proxy.On<string, string>("SendControl", (ip, data) =>
{
Console.WriteLine("server called SendControl");
Console.WriteLine();
byte[] dataBytes = HexEncoding.GetBytes(data, out int i);
try
{
lock (Clients)
{
if (Clients.Count > 0)
{
foreach (KeyValuePair<string, StateObject> client in Clients)
{
if (isClientConnected(client.Value.workSocket))
{
if (client.Key == ip)
{
Send(client.Value.workSocket, dataBytes);
break;
}
}
}
}
}
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
});
proxy.Start(); // await or .Wait()
вызывается после этого вызоваproxy.On<T>()
? - person reckface   schedule 12.12.2018con = new HubConnection("http://localhost:17263/"); proxy = con.CreateHubProxy("myHub"); Console.WriteLine("connecting to server"); con.Start().Wait(); Console.WriteLine("connected");
- person Usha phulwani   schedule 12.12.2018