SignalR 阻止 axios 调用(挂起状态)

问题描述 投票:0回答:1

我目前正在开发一个项目,该项目具有对拍卖中可用产品进行竞价的功能。同样,我们需要实时更新出价。

因为来自世界各地的用户可能有数千或数以千计的用户将竞标。

因此,我们使用 SignalR 进行实时更新,但问题是当连接超过 3 个连接时,无法连接更多用户,而且如果我们刷新页面,则使用 Axios 调用的 enpoints/api 会进入挂起状态并且不会在另一个系统的其他用户不刷新页面之前,不会返回数据。

如果多个用户同时使用该网站,则不会创建超过 3 个连接,并且使用 axios 的 api 会进入挂起状态并在队列中,当一个连接被释放时,只有之前的 api 会完成。

下面是在ReactJS端用于SignalR的代码

const getUpcomingLots = async () => {
    setLoading(true);
    try {

      let hubConnectionBuilder: any = new signalR.HubConnectionBuilder()
        .withUrl(HUBURL, {
          headers: {
            "Cross-Origin-Resource-Policy": "*",
          },
          withCredentials: false,
        })
        .withAutomaticReconnect()
        .build();

      hubConnectionBuilder.start().then(() => {
        hubConnectionBuilder.on("SendUpcomingLots", (data: any) => {
          setUpcomingLots(data);
        });


        axios
          .get(`${APIURL}?auctionId=${ID}&customerId=${customerId}`)
          .then(() => {
            setLoading(false);
          })
          .catch(() => {
            console.log("APIURL Error Send", new Date());
          });
      });
      
    } catch (error) {
      setLoading(false);
      console.error(error);
    }
  };

如果需要任何其他信息,请告诉我,我被这个问题困扰了一个多星期,我们需要在下周让网站上线。

我已经尝试了很多解决方案但没有成功。

如有任何帮助,我们将不胜感激。

javascript reactjs asp.net-core-signalr
1个回答
0
投票

感谢您的评论,想在这里回答我自己的问题。

因此,解决方案是将后端代码部署在 VM OS Server 上,因为之前后端部署在 Windows 10 上的 IIS Server 上,默认情况下有 10 个并发连接的限制。

在 VM OS Server 上部署后端,解决了问题,因为它可以处理无限的并发连接。

感谢所有发表评论的人。

© www.soinside.com 2019 - 2024. All rights reserved.