目前我正在研究 ASP.NET Core Web 项目的 SignalR,我使用 ASP.NET Core 作为 SignalR 的服务器,Web 客户端使用 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 不起作用。
当我关闭服务器时,客户端出现多个错误,提示由于连接已关闭,调用已被取消。
我的 SignalR 版本是 1.0.3
确实,我也查不出是什么原因。我希望你能帮助我,拜托...我也尝试过在服务器端返回一个字符串,但它也不起作用。
最佳答案
您不能将 IActionResults 与 SignalR 一起使用,它不是 http 请求,而是 RPC 样式调用。只需返回您想要返回的对象,或者如果您不需要向客户端返回任何内容,则将返回类型设置为Task。
public async Task<string> joinRoom(string roomId)
{
Console.WriteLine(roomId);
return "Ok";
}
关于javascript - SignalR Javascript 客户端 - 调用方法工作但 promise 不起作用(???),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52757271/