websocket vs rest API实时数据?[关闭]

发布于 2021-01-29 15:06:06

已关闭 。这个问题是基于观点的。它当前不接受答案。


想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。

5年前关闭。

改善这个问题

我需要不断访问服务器以获取金融工具的实时数据。价格一直在变化,因此我需要每0.5秒请求新的价格。代理程序的REST
API允许我执行此操作,但是,我注意到连接到服务器时会出现一些延迟。我只是注意到他们虽然也有websocket
API。根据我的读物,他们两个都有优点/缺点。但是对于我想做的事情来说,由于速度在这里特别重要,因此您会建议使用哪种API?websocket真的更快吗?

谢谢!

关注者
0
被浏览
65
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您所描述的最有效的操作是在客户端和服务器之间使用webSocket连接,并且仅当价格发生有意义的变化或达到最小数量时,服务器才通过webSocket将更新的价格信息直接发送给客户端。时间的流逝,价格已经改变。

    这可能比让客户不断要求新的价格变化要有效得多,并且新信息到达客户的时间可能会更及时。

    因此,如果您对新价格级别的信息以多快的速度到达客户端感兴趣,则webSocket可以更及时地将其到达客户端,因为服务器可以在更改时立即将新的定价信息直接发送给客户端。在服务器上。而使用REST调用,客户端必须在某个固定的时间间隔进行轮询,并且只会在轮询间隔的时间点获得新数据。

    WebSocket还可在您的网络基础架构上更快,更轻松,这仅仅是因为涉及较少的网络操作,从而仅通过已打开的webSocket连接发送数据包,而不是为每个REST
    / Ajax调用创建一个新连接,发送新数据,然后关闭该连接。这将使您真正了解特定应用程序的差异/改进有多大。

    但是,webSockets旨在帮助您解决特定情况,即客户端希望知道服务器上发生什么变化时(尽可能接近实时),因此,我肯定会认为这是此类类型的首选设计模式采用。


    这是通过已打开的webSocket发送价格更改与进行REST调用所涉及的网络操作的比较。

    webSocket

    1. 服务器看到价格已更改,并立即向每个客户端发送消息。
    2. 客户收到有关新价格的消息。

    休息/阿贾克斯

    1. 客户端设置轮询间隔
    2. 在下一个轮询间隔触发时,客户端创建与服务器的套接字连接
    3. 服务器收到打开新套接字的请求
    4. 与服务器建立连接后,客户端会将新的定价信息请求发送到服务器
    5. 服务器接收对新定价信息的请求,并发送带有新数据(如果有)的答复。
    6. 客户收到新的定价数据
    7. 客户端关闭插座
    8. 服务器收到套接字关闭

    如您所见,从网络角度来看,Rest /
    Ajax调用中还有很多工作,因为必须为每个新调用建立一个新的连接,而webSocket使用已经打开的调用。此外,在webSocket情况下,服务器仅在有新数据可用时才向客户端发送新数据-
    客户端不必定期请求它。

    如果定价信息不是很频繁地更改,则REST /
    Ajax方案也经常会在客户端请求更新但没有新数据的情况下进行“不执行任何操作”调用。由于服务器只是在可用时发送新数据,因此webSocket情况永远不会浪费资源。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看