热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

websocketvsrestAPI用于实时数据?

如何解决《websocketvsrestAPI用于实时数据?》经验,为你挑选了1个好方法。

我需要不断访问服务器以获取金融工具的实时数据.价格不断变化所以我需要每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案例从来没有那么浪费的情况,因为服务器只在可用时发送新数据.


推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 【系列二】长连接,短连接及WebSocket介绍(含http1.0,1.1,2.0相关)
    前言上一节讲了长轮询和轮询及其实现,这节讲一讲长连接、短连接及webSocket,在讲这些之前,我们先来普及一下http相关的一 ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • SQL Server 内存中OLTP内部机制概述(一)
    内存中OLTP(项目名为“Hekaton”)是一个新的完全集成到SQLServer中的数据库引擎组件。它专为访问内存常驻数据的OLTP工作负荷而进行优化。内存中OLTP有助于OLT ... [详细]
  • 前面的已经介绍过如何用webpack打包一个项目,细心的人会发现,打包后想要项目运行起来必须要把打包后的项目上传到服务器中,或者静态的项目 ... [详细]
  • HTTP协议之总结展望篇
    文章目录HTTP2HTTP2内核HTTP3Nginx:高性能的Web服务器OpenResty:更灵活的Web服务器网络应用防火墙(WAF)CDN ... [详细]
author-avatar
mobiledu2502886187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有