В настоящее время я изучаю 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
Действительно, я не могу понять, в чем причина. Надеюсь, вы можете мне помочь, пожалуйста... Я также попытался вернуть строку на стороне сервера, но она тоже не работала.
Вы не можете использовать IActionResults с SignalR, это не HTTP-запрос, это вызов RPC-стиля. Просто верните объект, который хотите вернуть, или введите тип возвращаемого задания, если вам не нужно ничего возвращать клиенту.
public async Task<string> joinRoom(string roomId)
{
Console.WriteLine(roomId);
return "Ok";
}