websocket vs rest API实时数据?[关闭]
-
您所描述的最有效的操作是在客户端和服务器之间使用webSocket连接,并且仅当价格发生有意义的变化或达到最小数量时,服务器才通过webSocket将更新的价格信息直接发送给客户端。时间的流逝,价格已经改变。
这可能比让客户不断要求新的价格变化要有效得多,并且新信息到达客户的时间可能会更及时。
因此,如果您对新价格级别的信息以多快的速度到达客户端感兴趣,则webSocket可以更及时地将其到达客户端,因为服务器可以在更改时立即将新的定价信息直接发送给客户端。在服务器上。而使用REST调用,客户端必须在某个固定的时间间隔进行轮询,并且只会在轮询间隔的时间点获得新数据。
WebSocket还可在您的网络基础架构上更快,更轻松,这仅仅是因为涉及较少的网络操作,从而仅通过已打开的webSocket连接发送数据包,而不是为每个REST
/ Ajax调用创建一个新连接,发送新数据,然后关闭该连接。这将使您真正了解特定应用程序的差异/改进有多大。但是,webSockets旨在帮助您解决特定情况,即客户端希望知道服务器上发生什么变化时(尽可能接近实时),因此,我肯定会认为这是此类类型的首选设计模式采用。
这是通过已打开的webSocket发送价格更改与进行REST调用所涉及的网络操作的比较。
webSocket
- 服务器看到价格已更改,并立即向每个客户端发送消息。
- 客户收到有关新价格的消息。
休息/阿贾克斯
- 客户端设置轮询间隔
- 在下一个轮询间隔触发时,客户端创建与服务器的套接字连接
- 服务器收到打开新套接字的请求
- 与服务器建立连接后,客户端会将新的定价信息请求发送到服务器
- 服务器接收对新定价信息的请求,并发送带有新数据(如果有)的答复。
- 客户收到新的定价数据
- 客户端关闭插座
- 服务器收到套接字关闭
如您所见,从网络角度来看,Rest /
Ajax调用中还有很多工作,因为必须为每个新调用建立一个新的连接,而webSocket使用已经打开的调用。此外,在webSocket情况下,服务器仅在有新数据可用时才向客户端发送新数据-
客户端不必定期请求它。如果定价信息不是很频繁地更改,则REST /
Ajax方案也经常会在客户端请求更新但没有新数据的情况下进行“不执行任何操作”调用。由于服务器只是在可用时发送新数据,因此webSocket情况永远不会浪费资源。