SignalR Javascript Client - вызов метода работает, но обещание не работает (???)

1

В настоящее время я изучаю 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");
    }

Проблема:

  • Успех вызова, Консоль на стороне сервера написала roomId

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

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

Моя версия SignalR 1.0.3

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

Теги:
signalr

1 ответ

1
Лучший ответ

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

public async Task<string> joinRoom(string roomId)
{
    Console.WriteLine(roomId);
    return "Ok";
}
  • 0
    Хорошо, спасибо, я заметил это: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню