当前位置: 首页 > 面试题库 >

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

勾渝
2023-03-14
问题内容

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

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

5年前关闭。

改善这个问题

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

谢谢!


问题答案:

您所描述的最有效的操作是在客户端和服务器之间使用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情况永远不会浪费资源。



 类似资料:
  • 假设我们有两个用户希望通过HTML表单进行通信 第一个用户填写一个html表单(名字、姓氏、年龄等)并提交它。第二个用户接收表单,但不能对其应用任何修改,然后以批准或不批准的形式提交给第一个用户(通过勾选单选按钮) 所有这些都必须实时发生。

  • 3.移除值事件侦听器和脱机的区别。

  • 我对Android dev和Firebase很陌生。 我需要以下帮助: 提前谢谢你。 公共类AddUsername扩展片段实现View.OnClickListener,TextWatcher{

  • 我浏览了所有的文档和这么多的博客,但没有得到答案。 问题是我有100个同时连接到Firebase实时数据库的初始免费配额。这意味着一次我的100个用户可以使用我的应用程序。使用应用程序后,除非用户不应用程序,否则仍然对该用户开放,因此同时没有其他用户可以访问。 所以我的问题是,如果我从数据库参考中删除侦听器,这也会关闭吗? 有了这个,我想实现的是,当User1得到他的搜索结果时,他/她将不再持有,

  • 随着实时数据量的迅速增长,人们对数据能够即时显示在手机、计算机上的需求越来越强烈。客户端与服务器之间对实时数据传输一般采用 WebSocket 协议、TCP 协议、HTTP 协议以及 Kafka 专用通讯协议等,可传输的数据格式包括 CSV、JSON 、GeoJSON等。 本节以查询一个线数据为例,每两秒将一个点通过 dataFlowService 传输给服务器,用来模拟实时数据。 //实例化 D

  • 我们正在构建一个聊天应用程序,一对一聊天是该应用程序的主要目的,所以目前,消息传递速度是我们的第一要务。我们需要一个后端解决方案,我们最初计划使用Firebase实时数据库。但后来Firestore出现了,从那以后,我们看到了Firebase团队对实时数据库Firestore的许多建议。 我们已经使用了实时数据库和Firestore,所以我们非常了解两者的功能和查询能力。对于我们的用例,就特性而言