http连接 如何创建长连接

http的层面上来说,没有一个入参,是用来指定该http连接为长连接的。

长连接就是一个普通的http连接。只是因为程序员,没有立即调用该连接的close()方法。

而是等不需要该连接的时候,才close()该连接。

所以,这个连接,就叫做长连接。


长连接必须使用tcp协议。



http连接,是建立在tcp协议的基础上的。



http中,其实没有长连接这样的类型。

保持一个tcp连接是长连接。完全是通过程序员手动来控制的。


如果程序员,想让一个http连接,比如该连接叫A,让A成为一个长连接。

那么,就不调用该连接的close()方法。

直到,不再需要A连接的时候,才关闭该连接。

那么,A就叫做一个长连接。


            //定时器的超时响应函数            
            /*
            服务端每隔15秒发一次心跳包
            //长连接请求发出后,该定时器设定为45秒后触发
            //下面槽的作用,就是为了检测m_bRecvHeartbeat的值,即客户端是否收到了服务端发过来的心跳包

            */
            void SimpleHttp::OnOutTimer()
            {
                //定时器超时了
                m_bOutTime = true;
                if(m_Mode != HTTP_KEEPALIVE)//标识该连接,是A。那么,程序员在关闭A连接的时候,就需要检测心跳包。
                {
                    m_OutTimer->stop();
                    m_NetworkReply->close();
                }
                else
                {
                    //http是长连接
                    if(!m_bRecvHeartbeat)  //心跳包停止了
                    {
                        m_OutTimer->stop();
                        m_AutoBreakOutTimer->stop();
                    
                        m_NetworkReply->close();//没有收到心跳包,关闭http连接
                    }
                    else
                    {
                        //接收到了服务端发过来的心跳包,那么不关闭http连接
                        m_bRecvHeartbeat = false;

                    }
                }
            }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值