ядро 2.1 signalR успешно подключено, но клиент пуст - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь использовать signalR в новом dotnet core2.1.У меня настроен сервер C # и готово приложение ionic 3 в качестве клиента.Я дошел до того, что установил успешную связь между ними.Когда я пытаюсь использовать SendAsync от сервера к клиенту, клиент показывает как ноль, даже если было установлено успешное соединение.
Я провел некоторое тестирование и даже попытался использовать переопределение OnConnectedAsync, чтобы увидеть, что происходит.Это срабатывает, но context.user.identity.name пусто, а клиент все равно возвращается в ноль.

В журнале браузера:

Information: WebSocket connected to ws://localhost:xxxx/myHub

в моем хабе

public async Task Send(string message)
{
  await Clients.All.SendAsync("SendMessage", message);
}

в контроллере

    public async Task<IActionResult> NewBuild()
{
  await myHub.Send("New Build Completed.");
  return Ok();
}

при моем запуске

services.AddCors(options => options.AddPolicy("CorsPolicy",
        builder =>
        {
          builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials();
        }));

  services.AddSignalR();

app.UseCors("CorsPolicy");

  app.UseSignalR(routes =>
  {
    routes.MapHub<myHub>("myHub");
  });

и в ионном

 hubConnection: HubConnection;
this.hubConnection =  new HubConnection('http://localhost:xxxx/myHub', {
  transport: TransportType.WebSockets
});
this.hubConnection.on("SendMessage", () => {
  this.InitTodayBuilds();
});

this.hubConnection.start().catch(() => console.error);

Как я уже сказал, похоже, что соединение просто отлично.Но когда вызывается метод Send, он получает пустое исключение.

Я что-то упустил здесь?Любая помощь приветствуется!

1 Ответ

0 голосов
/ 19 мая 2018

Я столкнулся с той же проблемой.Я ввел IHubContext в мой класс-концентратор для вызова методов на стороне клиента для стороны сервера.

public class ChangeRequest: Hub, ITransientDependency
{
    public IAbpSession AbpSession { get; set; }
    protected IHubContext<ChangeRequest> _context;
    public ILogger Logger { get; set; }

    public ChangeRequest(IHubContext<ChangeRequest> context)
    {
        AbpSession = NullAbpSession.Instance;
        Logger = NullLogger.Instance;
        _context = context;
    }

    public async Task SendMessage(string message)
    {
        await _context.Clients.All.SendAsync("getMessage", string.Format("User {0}: {1}", AbpSession.UserId, message));
    }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...