【问题标题】:SignalR Javascript Client - Invoke method work but promise didn't work (???)SignalR Javascript 客户端 - 调用方法工作但承诺不起作用(???)
【发布时间】:2023-04-08 08:27:01
【问题描述】:

目前我正在研究用于 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");
    }

问题:

  • 调用成功,服务器端的Console写入了roomId

  • 但是,客户端的 Promise.then/Promise.catch 不起作用

当我关闭服务器时,客户端出现多个错误,提示 由于连接已关闭,调用已被取消。

我的 SignalR 版本是 1.0.3

真的,我不知道是什么原因。我希望你能帮助我,拜托......我也尝试在服务器端返回一个字符串,但它也没有工作。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2016-05-07
      • 2014-02-10
      • 2013-04-19
      相关资源
      最近更新 更多