xmpp长连接,由于心跳包客户端没有收到,所以服务器断开长连接,有什么优化的方法吗? 3C

当然可以在客户端记录每个心跳包的时间,超过一定的时间没有收到服务器的心跳包,则重新连接服务器。但是感觉不是很好,有没更好的优化长连接的方法。

2个回答

现在遇到一个问题,就是想要过长时间没收到心跳包,就让应用进行自动重连。我调用disconnect发现无法自动重连,自己实现的重连又只能收消息,发不出消息。所以我想在长时间没收到心跳包,让应用模拟掉线异常,让其自动重连,有什么方法可以做到。

ok,这个问题基本有了眉目了。等优化好在公布答案。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为什么保持长连接需要心跳包?
为什么socket客户端在非正常断开后,服务器在很长一段时间内不会显示客户端断开? 为什么保持长连接需要心跳包? 怎么保持客户端与服务器长连接。
socket长连接、短连接以及心跳包机制
出于最近对im研究的兴趣,看到smack里有个30s发送一个空消息的线程,了解了下关于心跳包,keepalive的知识。 TCP的socket本身就是长连接的,那么为什么还要心跳包呢?搜索到的资料解释如下:一:内网机器如果不主动向外发起连接,外网机没法直连内网的,这也是内网机安全的原因之一吧,又因为路由器会把这个关系记录下来,但是过一段时间这个记录可能会丢失 ,所有每一个客户端每隔一定时间就会向服务
iOS - Socket-长连接(心跳包)的实现
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
netty实现长连接心跳检
阅读本文前,你必须了解netty相关的一些基础知识,了解怎么使用netty创建服务器端及客户端,了解一些编解码技术来避免粘包拆包问题,推荐李剑锋的《netty权威指南》。 主要逻辑: 使用netty实现长连接,主要靠心跳来维持服务器端及客户端连接。 实现的逻辑主要是: 服务器端方面: 1, 服务器在网络空闲操作一定时间后,服务端失败心跳计数器加1。 2, 如果收到客户端的p
长连接、心跳和断线重连
一、概述         目前IM软件有一个基本的功能就是长在线,即只要有网络就保持登录,然而,网络状态是无法预测的,所以IM软件经常会有”离线“状态,尤其是手机客户端。长在线这个功能依赖断线重连完成。         通常,网络不稳定是造成不能长时间在线的主要原因,还有比如:服务器强制注销客户端、次客户端被主客户端踢。目前的qq和飞信都有断线重连机制。有时候IM软件自动完成登录,有时
长连接为何要发送心跳包
最近面试的时候,被闻到关于Android IM 的问题,因为之前做过一个类似于微信的聊天软件,当时面试官问我,为啥后台需要发送心跳包,我说发送心跳包的作用是维持长链接,然后面试官问我,为啥长连接要发送心跳包的时候,我愣住了, 我也不知道为啥长链接需要发送心跳包     回来之后我查询资料后发现,Android的推送在后台维持的服务都会发送心跳包来维持长连接,当一台智能手机连上移动网络的时候,其实
TCP协议的长连接,短连接以及心跳包实例
TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三次握手的,而释放则需要4次握手, 所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的三次握手示意图: 经典的四次握手关闭图:   一、长连接与
java Socket 长连接 心跳包 客户端 信息收发 demo
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; /** * @author 某家: * @version 创建时间:2015年8月17日 下午3
长连接和端连接 心跳包机制
TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三次握手的,而释放则需要4次握手, 所以说每个连接的建立都是需要资源消耗和时间消耗的 ​经典的三次握手示意图:​ ​ ​ ​ 经典的四次握手关闭图:   ​
android长连接心跳机制
在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何一个长连接都需要心跳机制,客户端发送一个心跳给 服务器,服务器给客户端一个心跳应答,这样就形成客户端服务器的一次完整的握手,这个握手是让双方都知道他们之间的连接是没有断开,客户端是在线 的。如果超过一个时间的阈值,客户端没有收到服务器的应答,或者服务器没有收到客户端的心跳,那么对客户端来说则断开
长连接心跳问题解决总结
一、长连接的定义与心跳说明 我们在客户端(手机APP、浏览器、电脑客户端等)去向服务器请求数据交互的时候,一般是通过网络进行消息的传输。其中依据网络传输协议,与服务器建立的连接都是基于TCP/UDP进行。依据这些,我们可以粗略的认为客户端与服务器建立了能长期进行数据传输的网络通道,这就是长连接。 一般来说,TCP的机制可以为我们提供相对稳定的连接监听,即当客户端主动断开网络连接的时候,服务器也
互联网推送服务原理:长连接+心跳机制(MQTT协议)
互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了,所以才会出现像MQTT这种轻量级低消耗的协议来维护长连接,那么要如何维护长连接呢:   在写之前,我们首先了解一下为什么android维护长连接需要心跳机制,首先我们知道,维护任何
URL/HTTP/心跳包和长连接
URL URL 的全称是 Uniform Resource Locator(统一资源定位符)通过 1 个 URL,能找到互联网上唯一的 1 个资源URL就是资源在互联网上的地址、位置.互联网上的每个资源都有一个唯一的 URL每个人都有住址.URL就是类似人的住址.基本格式:协议头://主机地址/路径 协议头:不同的协议,表示不同的资源查找及传输方式主机地址:存放资源
高效 实现长连接保活:手把手教你实现 自适应的心跳保活机制
以下内容转载自http://blog.csdn.net/carson_ho/article/details/79522975前言当实现具备实时性需求时,我们一般会选择长连接的通信方式而在实现长连接方式时,存在很多性能问题,如 长连接保活今天,我将 手把手教大家实现自适应的心跳保活机制,从而能高效维持长连接目录1. 长连接 介绍1.1 简介1.2 作用通过 长时间保持双方连接,从而:提高通信速度确保...
XMPP IM 长连接 连接状态维护 和断线重连和单点登录 讲解(4)
ConnectionListener 连接状态监听器,监听Connet的各种状态的情况。....接口代码片段 void connected(XMPPConnection var1); void authenticated(XMPPConnection var1); void connectionClosed(); void connectionClosedOnError(Exception var1
Netty实现服务端客户端长连接通讯、心跳检测及自定义报文发送(一)
需求:    要求客户端启动时,将终端信息发送至服务器保存,终端还要随时接收客户端下发的任务。(发送的报文自定义) 一,下载并为项目添加Netty框架    1.Netty官网下载    2.csdn下载我说用的版本 二,基本思路:    Netty服务端通过一个Map保存所有连接上来的客户端SocketChannel,将客户端的mac地址作为Map的key。每次服务器
Socket心跳包,Socket长连接之旅
原地址:http://blog.csdn.net/qingzi635533/article/details/24302175最近公司项目要做一个同步功能,需要涉及到服务器与客户端的长连接,当时头脑里第一联想到的就是Socket啊,虽然Socket自己当时也了解过一点,但是长连接还是没做过啊,更何况心跳包,个个都是以前没有接触过的,于是就在网上找资料学习,终于功夫不负有心人找到了对应的资料,也实现了...
高效 保活长连接:手把手教你实现 自适应的心跳保活机制
前言 当实现具备实时性需求时,我们一般会选择长连接的通信方式 而在实现长连接方式时,存在很多性能问题,如 长连接保活 今天,我将 手把手教大家实现自适应的心跳保活机制,从而能高效维持长连接 目录 1. 长连接 介绍 1.1 简介 1.2 作用 通过 长时间保持双方连接,从而: 提高通信速度 确保实时性 避免短时间内重复连接所造成的信道资源 &am...
MQTT协议(二)连接和心跳
一、CONNECT(连接) 当客户端向服务器建议一个TCP/IP端口连接,协议基本会话必须使用一个CONNECT flow建立。  下面是一个较为完整的CONNECT消息结构:   Description 7 6 5 4 3 2 1 0 Fixed header/固定头部
长连接 网络断开问题
公司的青岛项目中,出现摄像头长连接网络异常duank
Netty 长连接服务
推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务。和 iOS 不同,Android 生态中没有统一的推送服务。Google 虽然有 Google Cloud Messaging ,但是连国外都没统一,更别说国内了,直接被墙。 所以之前在 Android 上做推送大部分只能靠轮询。而我们之前在技术调研的时候,搜到了 jPush 的博客,上面介绍了一些他们的技术特点
Android socket通信的长连接与心跳检测
在Android开发中,我们可能需要和服务器保持连接不断开,这时需要用到socket通信的长连接,并且定时发送消息检测是否是连接状态——心跳检测。 我们需要一个客户端和一个服务器端的demo,现在我就贴出重要代码,主要是android客户端的,服务器端的demo供大家下载。 首先我们需要新建一个BackService类来继承Service:package com.example.
IM长连接建立XMPP协议的使用
1.长连接服务建立package com.vp.loveu.service; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import
如果服务端重启,那么客户端的长连接会怎么样
这里记录一次服务端重启时,使用winshark的抓包过程; 场景是:SDK 建立对 服务端的长连接,客户端连接策略是: 失活判断: 一条连接 180s都没有read到数据; 保活判断: 每秒检查一次,连续60次检查都为空闲,那么发送一次keeplive包。 重连逻辑: 如果连接断开,那么会以2s 、 4s、  6s、  8s...这样的递增产生的时延,去重连,每次连接等待5s判断连接超
JAVA长连接demo(含心跳检测)
[java] view plain copy package houlei.csdn.keepalive;      import java.io.Serializable;   import java.text.SimpleDateFormat;   import java.util.Date;      /**   * 维持连接的消息对象。   *
Android的socket长连接(心跳检测)
这是Android的socket长连接(心跳包),由于本人项目中需要用到长连接,所以先做了个demo,亲测是没有问题的。
CocoaAsyncSocket之socket长连接
首先说一下iOS后台运行机制,可能很多iOS的同学不了解iPhone的后台运行机制,下面给大家简单了来说一下 转:http://blog.csdn.net/enuola/article/details/9148631 一、IOS的“伪后台”程序 首先,先了解一下iOS 中所谓的「后台进程」到底是怎么回事吧? 在iOS 中所谓的「后台驻留」并不是指「执行中的程序」,而是「
tcp长连接判断对方断开的方法
1、心跳包 2、keepalive检测,对于设置了keepalive来说,当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。此时TCP的状态是断开的。 [cpp] view plain copy
Socket 长连接 短连接 心跳 JAVA SOCKET编程
简单解释就是: 短连接:jian
TCP长连接与短连接、心跳机制
转自: 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的三次握手示意图: 经典的四次握手关闭图: 2. TCP短连接
AGW(lvs)长连接后端应用重启遇到连接中断问题
一个集群跑八台AGW,  后端下挂长连接服务, 一个VIP对应一个RS,  keepalived vip配置alpha 、omega选项. 问题描述: 1、连接到服务器 XXX.XXX.97.97(VIP) ,这时能正常发消息 2、后端服务器应用重启 3、客户端连接断开后尝试重连 4、服务器启动成功 5、客户端重新连接成功,并能发送消息,未读消息也能推送下去 6、多了一会(大概几秒)
最近做socket保持长连接的一些心得
来自:http://s.yanghao.org/program/viewdetail.php?i=2945 自己写的客户端马上要发布了,忽然发现了一大堆问题,主要集中在与服务器的TCP连接经常莫名断开,客户端又检测不到,不能及时重连。一个多星期的修改,有一些心得,与大家分享。也希望大家多发表意见,您的意见也许最后就实现在我的软件中了! 主要分为两部分: 一,如何更好的检测TCP连接是否正
微信收费事件背后被广泛忽略的技术细节——长连接心跳周期
Oasis Feng,淘宝无线事业部高级技术专家,曾就职于华为核心网平台技术部。   作为一个横跨通信与互联网两大行业的从业者,前四年的核心网经验和后五年的互联网经验让我不得不感慨一个非常遗憾的现实:通信与互联网两大行业本来可以有珠联璧合的技术协同,为移动互联网提供近乎零耗电零流量的PUSH机制,但由于两个行业之间长期以来的价值观隔阂和互防心态,导致如今的手机PUSH技术不仅为用户增加了显著
从通信的角度分析一下微信推送的长连接的弊端——网易面试题
从通信的角度分析一下微信推送的长连接的弊端
tcp长连接中客户端重连
tcp长连接客户端重连
Android通过WebSocket建立一个长连接(带心跳检测)从服务器端接收消息
   最近公司要做一款内部使用的工具类app,方便销售部门打电话(其实就是在后台有好多用户数据,之前销售部门同事拨打电话,需要自己从销售后台查看用户手机号等信息,然后自己拿自己手机拨号,然后打出去。现在想实现销售的同事,点击销售后台的按钮,自己的手机直接拨号的功能)。为此,开始着手思考,怎么实现销售后台点击按钮,手机app端能收到点击按钮的监听。  首先,后台提供一个接口,在服务器端不断的调用接口...
Mina 长连接实践
- Mina介绍最近项目需要使用长连接,而Mina应该是个不错的选择。个人在Mina的长连接的集成过程中碰到一些问题解决,现在和大家探讨下。言归正传,要使用Mina首先需要看看Mina的官网,特别是他的开发文档需要阅读下(http://mina.apache.org/mina-project/documentation.html)。个人觉得以下二张图是比重要的(来自于http://mina.apac
websocket 心跳连接
websocket连接时,如果长时间没有进行数据的通讯就会自动断开连接。为了不让其断开就在要断开的时候自动发送数据进行通讯,就产生了心跳连接的效果。 具体的操作就是在客户端建立连接的时候开启发送心跳信息的线程,之后再每次收到信息之后就线程重启。服务端在处理数据的时候多处理一下心跳信息,将其发给连接的用户,从而实现心跳通讯。 服务端代码 @ServerEndpoint("/video") pu
tcp长连接处理服务端和客户端处理方式
长连接的处理方式是:Server端收到Client端发来的信息之后,开始心跳计时,在设定时间内如果收到Client发来的消息,则重置计时器,否则计时结束断开连接。Client端,处理方式是:用time.NewTicker创建一个定时器,每间隔一秒发送下当前时间到服务器。服务端代码如下:package main    import (      "fmt"      "os"      "net" ...
物联网长连接机制--应用层心跳与超时
原创声明:本文系作者原创,谢绝个人、媒体、公众号或网站未经授权转载,违者追究其法律责任。做IM、物联网和服务器端底层中间件,经常会涉及到在线保活长连技术的细节实施。今天我们谈一个主流的保活在线技术:应用层心跳+超时。长连接目前使用最多的场景是IM(Instant Message)和消息推送,如微信、YY语音、极光推送等产品,除了IM,目前持续应用在物联网、车联网、医疗Al等领域。长连接概念这里的连...
客户端与服务端长连接Mina框架讲解
推送的实现方式: 一:客户端不断的查询服务器,检索新内容,也就是所谓的pull 或者轮询方式。太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。 二:服务器又新内容时,发送一条类似短信的信令给客户端,客户端收到后从服务器中下载新内容,也就是SMS的推送方式。问题是这个方案的成本相对比较高。 三:客户端和服务器之间维持一个TCP/IP长连接,服务器向客户端push。  
Android TCP长连接 心跳机制及实现
背景知识 智能手机上的长连接心跳和在Internet上的长连接心跳有什么不同 Android系统的推送和iOS的推送有什么区别 几种推送的实现方式 协议 1XMPP简介 2 MQTT简介 3移动端消息推送 xmpp 和 mqtt 哪个更费电 心跳代码实现 Demo建立一个带有心跳检测的SocketDemo 维护任何一个长连接都需要心跳机制,客户端发送一个心跳给服务器,服务器给客户端一个心跳应答,
用okhttp实现webSocket长连接
用okhttp实现webSocket长连接,可以接收服务端消息,向服务端发送消息
android通过xmpp实现服务器到客户端的推送功能
最近项目中要做推送功能,除了自己知道的友盟推送外还不知道其它的实现方式,于是就上网百度了一下要实现推送的基本途径,发现主要还有以下几种方式。 1.客户端创建一个socket,与服务器端的serversocket连接,其实就是客户端与服务器一直保持连接,这个其实本质上不能算是推送,只是利用了长连接这一技术实现了揈 送的功能,需要在后台一直启动一个服务与服务器保持连接才可以,还要处理许多意外的情况,如:服务被强制关掉,无法在手机关机的情况下推送等等。总之要处理的情况比较多,不太容易全部处理好。
Apache mina 入门(四) —— 客户端长连接方式实现断线重连监听
通过前面 Apache Mina 入门 (二)—— 异步通信机制 我们可以实现一个长连接的客户端。但会发现一个问题,就是当网络、服务器、应用程序出现问题而导致连接断开后,我们的客户端不能自动重连服务器。导致客户端程序瘫痪,不能使用。这个时候,通过增加一个监听器,就能实现重连。 在我们实际生产环境中,断线的原因可能更复杂:网络不稳定、延时、服务器负载高、服务器或者应用程序的发送或者接收缓冲区
IOCP完成端口与长连接通讯
        最近在写一个通讯代理程序的时候使用了IOCP通讯模型,几年前也使用过IOCP,不过当时的程序是基于短连接的,而这次是长连接的,写这个程序的过程中我觉得主要有以下几点值得注意:1、整个程序的架构:程序由一个Accept线程,n个工作者线程,1个线程池管理线程,n个业务处理线程构成。Accept线程接收客户端连接并投递WSARecv重叠操作,工作者线程中通过GetQueuedCom
移动客户端中长连接技术(一)
移动客户端 长连接
BOSH、长连接和短连接、http的理解
Bidirectional-streams Over Synchronous HTTP (双向同步)(BOSH) 是一种传输协议。 它可以利用同步的HTTP协议模拟两个实体(例如客户端-服务端)双向流传输,而不需要轮询或异步组件。 对于那些同时需要“推”和“拉”技术的应用程序,BOSH明显比AJAX等基于HTTP协议的技术更高效,更节约资源。相比HTTP轮训技术(如Comet技术),BOSH有
[线上问题] Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决
前些天,线上出现“服务端长连接与客户端短连接引起Nginx产生大量"TIME_WAIT"状态的线程”的问题分析解决”,这个是由于“服务端使用HTTPs长连接,而客户端使用短连接”引起。这几天,发现Nginx与Tomcat之间也存在同样的问题,原因是两边的相关配置参数不一致引起的。(这是心细活!)   先说说服务为什么使用HTTPs长连接技术?有如下几个原因: 对响应时间要求较高;
TCP Socket客户端,以及解决长连接的办法
1.1 TCP Socket客户端 客户端的工作流程:首先调用socket函数创建一个Socket,然后指定服务端的IP地址和端口号,就可以调用sendto将字符串传送给服务器端,并可以调用recvfrom接收服务器端返回的字符串,最后关闭该socket。 笔者这里分成了六步: 第一步:创建socket并配置socket第二步:调用bind绑定监听ip和端口号第三步:调用connect连
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问