首页 > 其他分享 >云计算-http实时通讯

云计算-http实时通讯

时间:2024-01-20 20:32:22浏览次数:29  
标签:通讯 http 请求 实时 链接 服务器 超时 连接 客户端

短链接

请求示例

云计算-http实时通讯_长连接

在HTTP/1.0中,默认使用的是短连接。如果需要使用长连接:通过Connection:Keep-alive来实现长连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话

短链接操作步骤:

建立链接数据传输关闭链接

优点:服务器来说管理较为简单,存在连接都是有用的连接

缺点:频繁的建立链接和关闭浪费时间

适用场景:用户量巨大的web网站

每一次都是重新连接请求

长连接

请求示例

云计算-http实时通讯_服务器_02

HTTP1.1协议默认使用的是长连接,如果需要使用短连接Connection:close。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

假如在空闲时间内,再次使用此连接,则连接仍然有效,使用完之后,重新计时间,空闲时间到期之后过期

建立链接数据传输…(保持链接)…数据传输关闭链接

开启Keep-Alive的优缺点:

优点:Keep-Alive模式更加高效,因为避免了连接建立和释放的开销。

缺点:长时间的Tcp连接容易导致系统资源无效占用,浪费系统资源。

适用于场景:用于操作频繁,点对点的通讯,而且连接数不能太多,连接数越多对服务器的压力越大

解决方案:关闭长时间没有读写操作的连接(设置连接时间),或者限制客户端最大连接数(设置连接数)

使用telnet模拟http短连接与长连接

telnet www.baidu.com

短连接

云计算-http实时通讯_客户端_03

长连接

云计算-http实时通讯_服务器_04

短轮询

请求示例

云计算-http实时通讯_服务器_05

由客户端每隔一段时间,向服务器发起一次http请求,服务器查询接口是否有数据更新,若有则返回最新数据,没有则提示客户端没有最新数据

如:获取库存数量,不停的请求服务器,如果客户端多了,对于服务器的压力很大

云计算-http实时通讯_客户端_06

优点:客户端和服务器端实现都比较简单

缺点:请求间隔小,则频繁请求,无用请求多,浪费网络带宽和服务器资源

请求间隔大,则信息时效性一般

长轮询

请求示例

云计算-http实时通讯_服务器_07

客户端向服务器发出一个设置较长网络超时时间的http请求,并且在Http连接超时前,不主动断开连接;等待客户端超时或有数据返回后,再次建立一个同样的Http请求

如:

客户端向服务器发送请求,超时时间为30s;

30s内服务器库存有数据变化,则返回数据,并且服务器端断开连接

没有库存数据更新,不会立即返回数据给客户端,30s后客户端超时会主动断开连接,然后客户端将重新建立一个新的http连接,重复上述操作

示例

云计算-http实时通讯_服务器_08

标红的就是没有数据改变被阻塞挂起请求

将请求挂起会导致资源的浪费,当客户端请求多了,服务器端挂起的线程不停的检测数据库也有问题

长轮询短轮询不适用客户端数据量过多的情况。

优点:有数据更新时,能比较及时的响应

没有新数据更新时,服务端会保持连接直到超时,请求相对少,节省网络带宽

缺点:服务器端需要保持 HTTP 连接,消耗一定的资源

服务器端数据变更频繁时,请求也会变得频繁

返回数据顺序无保证,难于管理维护

标签:通讯,http,请求,实时,链接,服务器,超时,连接,客户端
From: https://blog.51cto.com/u_11555417/9346080

相关文章

  • gin-net-http
    packagemainimport( "net/http" "github.com/gin-gonic/gin")funcmain(){ r:=gin.Default() r.GET("/",func(c*gin.Context){ c.String(200,"Hello!!!!") })}  gin框架使用的是定制版本的httprouter,其路由的原理是大量使用公共前缀的树结构......
  • node-sass 安装出错 Cannot download "https://github.com/sass/node-sass...
    Downloadingbinaryfromhttps://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.nodeCannotdownload"https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node": github网站大多时候都访问不到,下载 win32-x......
  • https速度慢解决办法(开启OCSP Stapling)
    网站通过certbot配置好之后,只要在末尾加两行即可。ssl_staplingon;ssl_stapling_verifyon;详细位置。server{listen443ssl;server_namexx.xx.com;indexindex.htmlindex.htmindex.jsp;ssl_certificateserver.pem;#证书的.cer文件路......
  • Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfi
    HttpServletRequestHttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是HttpServletRequest接口的实例化对象,表示该对象主要应用在HTTP协议上,该对象是由Tomcat封装好传递过......
  • Adnroid WebView从http协议加载本地html,而不是file协议
    1.使用WebViewAssetLoader需要在build.gradle中添加webkitimplementation'androidx.webkit:webkit:1.6.0'2.然后设置WebviewprotectedvoidwebviewSet(){WebViewwv=binding.wv;WebSettingswvSettings=wv.getSettings();finalWebViewA......
  • HttpWebRequest -- 一个很坑的401 UnAuthorization的解决方法
    昨天,一个新的客户在CallRestfulAPI的时候,出现了401UnAuthorization的错误。查看解决方法,有下面几个原因会导致这个问题:检查 ServicePointManager.SecurityProtocol 设置,并设置 ServicePointManager.ServerCertificateValidationCallback 以至少返回 true(以接......
  • Nginx基础配置详解(main、events、http、server、location)
    Nginx基础配置详解(main、events、http、server、location):https://blog.csdn.net/weixin_43834401/article/details/130562289?ops_request_misc=&request_id=&biz_id=102&utm_term=nginx%20server%20%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95&utm_medium=distribute.pc_......
  • 西门子PLC+国产远程IO的通讯组合的应用优势
    目前,市面上最常见的PLC+远程IO的配置是西门子PLC+国产PROFINET从站。这样做既保证了整个系统的稳定性,又保证了整个系统的性价比。国产远程IO的优势是性价比高,适配性广,可以兼容市面上常见的PLC品牌,国产IO集成了EtherCAT、PROFINET、EtherNETIP、CCLINK,总线种类丰富,经过多年的深耕,国......
  • 2-STM32F103+EC800K(移远4G Cat1)远程升级篇(自建物联网平台)-STM32通过EC800K使用htt
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/myota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明前......
  • AI深度解析:实时分布式消息平台NSQ
    NSQ是一个由Go语言编写的高性能、可扩展且易于部署的实时消息处理平台,专为大规模系统设计。在今天的微服务架构及云计算环境中,NSQ提供了一种优雅而强大的方式来进行异步通信和解耦服务。此篇文章旨在从多个角度深入分析NSQ,助你了解其工作原理、特点以及应用场景。工作原理NSQ遵......