作者:mobiledu2502886187 | 来源:互联网 | 2023-05-21 11:41
我需要不断访问服务器以获取金融工具的实时数据.价格不断变化所以我需要每0.5秒申请新价格.经纪人的REST API让我这样做,但是,我注意到连接到服务器时有一些延迟.我只是注意到他们也有websocket API.根据我的阅读,他们都有一些利弊.但是对于我想要做的事情,因为速度在这里特别重要,如果您推荐使用哪种API?websocket真的更快吗?
谢谢!
1> jfriend00..:
对于您所描述的内容,最有效的操作是在客户端和服务器之间使用webSocket连接,并让服务器通过webSocket直接向客户端发送更新的价格信息,只要价格变化一些有意义的金额或最小金额时时间已过,价格已经改变.
这可能比让客户不断要求新的价格变化以及新信息何时到达客户的时间更加及时更有效.
因此,如果您对新价格水平的信息到达客户端的速度感兴趣,那么webSocket可以更加及时地将其发送到那里,因为服务器可以在更改时立即将新的定价信息直接发送给客户端在服务器上.使用REST调用时,客户端必须在某个固定的时间间隔内轮询,并且只能在轮询间隔点获取新数据.
webSocket在您的网络基础架构上也可以更快更轻松,因为简单地通过已打开的webSocket连接发送数据包所需的网络操作较少,而不是为每个REST/Ajax调用创建新连接,发送新数据,然后关闭连接.在您的特定应用程序中,这会产生多大的差异/改进,这是您需要衡量才能真正了解的.
但是,webSockets旨在帮助您在客户端想要知道的特定场景(尽可能接近实时),当服务器上的某些内容发生变化时,我肯定会认为它是这种类型的首选设计模式使用.
以下是对已经打开的webSocket发送价格变化与进行REST调用所涉及的网络操作的比较.
的WebSocket
服务器发现价格已发生变化,并立即向每个客户发送消息.
客户收到有关新价格的消息.
REST /阿贾克斯
客户端设置轮询间隔
在下一轮询间隔触发器时,客户端创建到服务器的套接字连接
服务器收到打开新套接字的请求
与服务器建立连接后,客户端会向服务器发送新的定价信息请求
服务器接收新定价信息的请求,并发送带有新数据(如果有)的回复.
客户收到新的定价数据
客户关闭套接字
服务器接收套接字关闭
正如您所看到的,从网络角度来看,在Rest/Ajax调用中还有更多内容,因为必须为每个新调用建立新连接,而webSocket使用已经打开的调用.此外,在webSocket案例中,服务器只在新数据可用时向客户端发送新数据 - 客户端不必定期请求它.
如果定价信息不经常更改,则REST/Ajax方案也经常会在客户端请求更新的情况下进行"无操作"调用,但没有新数据.webSocket案例从来没有那么浪费的情况,因为服务器只在可用时发送新数据.