我目前正在开发一个项目,该项目具有对拍卖中可用产品进行竞价的功能。同样,我们需要实时更新出价。
因为来自世界各地的用户可能有数千或数以千计的用户将竞标。
因此,我们使用 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);
}
};
如果需要任何其他信息,请告诉我,我被这个问题困扰了一个多星期,我们需要在下周让网站上线。
我已经尝试了很多解决方案但没有成功。
如有任何帮助,我们将不胜感激。
感谢您的评论,想在这里回答我自己的问题。
因此,解决方案是将后端代码部署在 VM OS Server 上,因为之前后端部署在 Windows 10 上的 IIS Server 上,默认情况下有 10 个并发连接的限制。
在 VM OS Server 上部署后端,解决了问题,因为它可以处理无限的并发连接。
感谢所有发表评论的人。