当前,我正在研究ASP.NET Core Web项目的SignalR,我将ASP.NET Core用作SignalR的服务器,Web客户端使用SignalR Javascript客户端。 我正在制作一个聊天应用程序,当客户端从服务器调用功能时,该应用程序将返回一些消息。 这是我的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
真的,我找不到原因。我希望您能为我提供帮助。我也尝试在服务器端返回一个字符串,但它也无法正常工作。
答案 0 :(得分:1)
您不能将IActionResults与SignalR一起使用,它不是http请求,而是RPC样式调用。只需返回要返回的对象,或者如果不需要将任何内容返回给客户端,则将返回类型设为Task。
public async Task<string> joinRoom(string roomId)
{
Console.WriteLine(roomId);
return "Ok";
}