网站上的实时更新-每秒1个ajax是不好的做法?

网站上的实时更新-每秒1个ajax是不好的做法?,ajax,reactjs,api,architecture,software-design,Ajax,Reactjs,Api,Architecture,Software Design,我有一个网站,每个用户可以有几个订单。每个订单都有自己的状态。后台进程,根据需要不断更新每个订单的状态。我想实时通知用户他的订单状态。因此,我开发了一个API端点,它返回给定用户的所有订单。 在客户端,我开发了一个React组件来显示订单,然后每秒向API执行一个AJAX请求以获取所有订单及其状态,然后React将在必要时自动更新 每秒进行一次AJAX调用以获取用户的所有订单是一种糟糕的做法吗?我还可以采取哪些其他策略?是的。您可以使用Socket来实现这一点。看看 编辑:我的观点是,为什么要使

我有一个网站,每个用户可以有几个订单。每个订单都有自己的状态。后台进程,根据需要不断更新每个订单的状态。我想实时通知用户他的订单状态。因此,我开发了一个API端点,它返回给定用户的所有订单。 在客户端,我开发了一个React组件来显示订单,然后每秒向API执行一个AJAX请求以获取所有订单及其状态,然后React将在必要时自动更新


每秒进行一次AJAX调用以获取用户的所有订单是一种糟糕的做法吗?我还可以采取哪些其他策略?

是的。您可以使用Socket来实现这一点。看看

编辑:我的观点是,为什么要使用AJAX来模拟一个可以通过为其设计的特性来完成的任务?插座就是用来做这种事情的

想象一下,例如,如果您的用户失去了internet连接。使用Socket.IO,您可以很好地处理此问题。但我认为使用AJAX不会那么容易

考虑到可伸缩性,Socket.IO被设计为在任何传输上都能发挥性能。它根据可能的连接而优雅地降级的方式非常好,这意味着您的服务器将尽可能少地过载,同时仍然能够覆盖尽可能多的受众


AJAX可以做到这一点,但它并不是最好的设计。

对于这个问题,没有一种解决方案适合所有人

首先,这不是一个聊天应用程序,如果延迟不到1秒,用户体验不会有太大改变

这就给我们留下了技术上的原因,这实际上取决于许多因素:

你有多少用户(总负载),有多少并发用户在等待他们的订单,你在使用什么基础设施,你是否有其他重要的东西要构建,或者你只是想花更多的时间编写一些有趣的东西

如果你有一小部分用户,每秒查询一次也没什么错,它很简单,维护开销少,而且你说你已经对它进行了编码

如果有几十个或更多的并发用户在等待状态,那么最好使用WebSocket


就基础设施而言,太多的WebSocket是昂贵的(一些云主机对套接字的数量有限制),所以如果你想走这条路,请记住这一点。

你能详细说明一下吗?为什么这样做不好?socket更好,因为它基于事件emitshey@Ivan建立了连接,刚刚编辑了我的回答,其中谈到了为什么在这种情况下我会使用socket而不是ajax。