首页 > 编程知识 正文

websocket心跳机制,java socket 心跳

时间:2023-05-03 18:24:14 阅读:189715 作者:430

我们知道网络的w3要素。主机地址(所谓的ip地址)、端口号)服务器开发的童鞋我都知道。 80,8080 . ),传输协议。 能够根据ip地址找到对应的主机,并能够根据端口号找到主机上的对应程序,从而能够确定如何从传输协议在网络之间发送数据。 典型的网络传输协议有HTTP、HTTPS、TCP、UDP等。 套接字还是一种传输协议,其基础是TCP/IP协议。通过Socket协议使网络上的两个程序通过一个双向的通信连接起来实现数据交换纯真灯泡、通过socekt建立的连接、至少要有2个端、服务器端运行的插座、客户端运行的插座。

服务器端套接字,我们可以理解为特殊的应用程序,总是打开的。 它具有用于侦听客户端套接字连接的固定端口,当您接受来自客户端的连接请求时,它会做出相应的响应。 服务器端和客户端连接建立后,数据就可以相互传输了。 易懂:服务器端可以理解为巨大的水库,客户端可以理解为小桶。 为了在水库和水桶之间沟通水的流动,需要插口,水库和水桶必须双向连接。 下图:

此时,客户端socket和服务器端socket建立起了连接,就可以互相传递数据了但是,在服务器和客户端之间通过套接字建立的这样的连接是长的连接,既然有长的连接,就需要知道是对应的有线连接。 通过http协议建立的连接是短连接,连接后一会儿该连接就会断开(有关短连接请自己百度查看)。

既然客户端和服务器端建立了长连接,那么怎么知道长连接一直处于保持状态,而没有断开那?我们就不能说它们之间保持了长连接。 一直维持下去吧。 两端是“心跳”的结构,检测是否维持了长时间的连接。

注:“心跳包”就是服务器端和客户端约定好的一种数据。所谓“心跳”的结构,实际上是服务器端按照固定的频率向客户端发送心跳,客户端接收并响应服务器端发送心跳信号时,客户端不作出响应。 服务器端以为已经不在了,切断长连接。

说明: 服务器只是在客户端长时间没有给服务器发送数据的情况下,才会发心跳包。例如,我们规定固定频率为30秒。 这意味着服务器每30秒向客户端发送一次心跳包。 假设服务器和客户端正在愉快地互相传输数据至少30秒,此时30秒不会发送心跳信号。为什么不会发送心跳包??心跳的发送时间根据客户端上次向服务器发送数据的时间计算。 例如,客户端最后一次向服务器发送数据是在10点05分05秒,从该点开始计算。 如果在05分35秒之前客户端尚未向服务器发送数据,服务器将向客户端发送心跳信号。 客户端接收并响应心跳,告诉服务器连接仍在继续,但如果客户端在05分34秒向服务器传递数据,则此时将从05分34秒开始重新计算,每隔30秒计算一次.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。