SignalR Javascript Client-调用方法有效,但诺言不起作用(???)

时间:2018-10-11 09:58:45

标签: javascript asp.net signalr asp.net-core-signalr

当前,我正在研究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

真的,我找不到原因。我希望您能为我提供帮助。我也尝试在服务器端返回一个字符串,但它也无法正常工作。

1 个答案:

答案 0 :(得分:1)

您不能将IActionResults与SignalR一起使用,它不是http请求,而是RPC样式调用。只需返回要返回的对象,或者如果不需要将任何内容返回给客户端,则将返回类型设为Task。

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