SignalR Javascript Client - вызов метода работает, но обещание не работает (???) - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я изучаю SignalR для веб-проекта ASP.NET Core, использую ASP.NET Core в качестве сервера для SignalR, а веб-клиенты используют SignalR Javascript Client.Я делаю приложение чата, которое будет возвращать некоторые сообщения, когда клиент вызывает функцию с сервера.Вот моя клиентская функция Javascript:

      this.hub.invoke(method, data)
      .then((res)=>{ alert(res);})
      .catch(err=> alert(err));
Метод сервера:
    public async Task<IActionResult> joinRoom(string roomId)
    {
        Console.WriteLine(roomId);
        return new OkObjectResult("Ok");
    }

Проблема:

  • Успешный вызов, консоль на стороне сервера написала номер комнаты

  • Однако Promise.then / Promise.catch на стороне клиента не работал .

Когда я закрываю сервер,на клиентской стороне было многократное сообщение о том, что Вызов отменен из-за того, что соединение было закрыто.

Моя версия SignalR - 1.0.3

Действительно, я не могу понять, в чем причина.Надеюсь, вы мне поможете, пожалуйста ... Я также пытался вернуть строку на стороне сервера, но она тоже не сработала.

1 Ответ

0 голосов
/ 13 октября 2018

Вы не можете использовать IActionResults с SignalR, это не запрос http, это вызов в стиле RPC.Просто верните объект, который вы хотите вернуть, или сделайте возвращаемый тип Task, если вам не нужно ничего возвращать клиенту.

public async Task<string> joinRoom(string roomId)
{
    Console.WriteLine(roomId);
    return "Ok";
}
...