客户端的实现:
1, 如果你正在对流进行读写,那么表示其实你己经在活跃状态,不需要发送心跳消息
2, 如果你的网络是空闲的, 那么需要指定一个时间间隔(如20sec)向server发送心跳消息。
所谓的心跳不过就是当网络空闲时,循环用指定的消息格式向服务器发送消息,服务器收到后也用指定的消息格式返回消息,双方确认都在线。

如果你问的是后台的实现:
1, 一个主机不可以一次只能响应一个client,你需要并发响应,否则client的使用就是恶梦。你可以自己写多线程来处理如何并发,书上都有实例可以抄。 但这样的效率相当低,并且你很难处理多线程间同步和死锁问题,所以Java4以后引入了NIO的机制来解决复杂的服务器并发编程,并且速度非常快, 但是NIO本身却也很复杂, 所以我建议采用第三方开源框架,如APACHE的MINA,不需要重复建造轮子。
2, 但如果你的业务的确需要锁定资源,在同一时间的确只能许一个人响应,比如只想一份资料在同一时间只让一个人编辑等。 你可以先锁定资源,先来者先得,后来者也响应,但只响应一个提示消息,并不得到真正的资源。
3, 所以,先来者因为己经正在读取资源,所以可以确定在线,不需要发送心跳,而后来者每次请求都有消息可以返回,要么是错误提示要么是心跳发送到服务器后的返回,所以只要有消息返回就可以确定双方都网络在线

-----------------------------------------------------------------------------------------------------------

client如何采用socket机制与后台通讯时,网络是长连接的,不像HTTP,
HTTP每次发送消息时,会:
1. create URL connection
2. 获取inputstream 和outputstream
3. 如果是POST,通过 stream 写入数据到后台
4. 等待后台返回数据,并处理,最后回调自己的业务逻辑
5. 必须关闭网络
但Socket方式是明显不同的, 因为一旦create 连接并且后,就不需要每次都关闭连接。你只管发送消息,并且定时取消息。
问题是,我只管从连接通道中取消息的话,怎么知道连接是好的。
所以我们需要过一段时间就去试探一下连接是否好的,如果不是好的就重连一下。这就是发送心跳的目的。
当然发送心跳包是要等网络空闭时才能发, 因为发送消息到后台也是需要消费网络带宽的,是需要时间的,如果发太多,或者正准备发送你的业务数据到后台之前就先发送了一堆心跳包到后台,则你的业务包要等待一段长时间,不是好的体验。
那么怎以样才算网络空闭呢?
这里要用到消息队列一个数组, 你每次需要向后台发送数据的时候都把数据封装成一个发送任务,放在你的消息队列里,你有一个线程,设每秒运行一次,每次运行时扫描队列是否有任务,如果有则发送到后台,没有则表示网络空闲,你的心跳计时器还发启动,计时到20秒时,插一个心跳任务到你的队列

-------------------------------------------------------------------

socket.io..和pomelo的socket都实现了心跳..

1.服务端向客户端发送心跳..,客户端记录接受心跳的时间..

2.客户端每隔一段时间检查,服务端的心跳时间是否大于超时时间久可以了....

就是说.客户端不用去向服务端发送心跳.

关于websocket中的心跳..的更多相关文章

  1. AndroidPN中的心跳检测

    在AndroidPN客户端里存在着心跳检测功能.就是每隔一段时间客户端向服务器端发送一个消息,以检测连接是否正常,发送的消息内容为: <presence id="h09Ke-13&qu ...

  2. c# 在 websocket 中访问 session

    今天的项目需要用到websocket,但是中websocket中无法直接访问session,一访问session就出错,断开连接. 找了老半天百度也没有相关c#的介绍和方法,没办法,找不到现成的代码, ...

  3. java websocket中的ping-pong 机制

    参考源码: https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/java/org/java_websocket/cli ...

  4. Netty 中的心跳检测机制

    心跳检测一般存在于建立长连接 或者 需要保活的场景. 心跳的使用场景 长连接的应用场景非常的广泛,比如监控系统,IM系统,即时报价系统,推送服务等等.像这些场景都是比较注重实时性,如果每次发送数据都要 ...

  5. Netty 中的心跳机制

    在TCP长连接或者WebSocket长连接中一般我们都会使用心跳机制–即发送特殊的数据包来通告对方自己的业务还没有办完,不要关闭链接. 网络的传输是不可靠的,当我们发起一个链接请求的过程之中会发生什么 ...

  6. Python WebSocket长连接心跳与短连接

    python websocket 安装 pip install websocket-client 先来看一下,长连接调用方式: ws = websocket.WebSocketApp("ws ...

  7. 如何在socket编程的Tcp连接中实现心跳协议

    from http://blog.csdn.net/nyist327/article/details/39586203 心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心 ...

  8. 在websocket中怎么样注入service类

    最近项目中用到了websocket,遇到很多问题,其中一个是@ServerEndpoint修饰的类无法注入其他的bean,注入的对象都是null,在网上找了好多资料,无意中发现一个朋友的答案给了思路. ...

  9. WPF中使用定时器 DispatcherTimer 做TCP连接中的心跳 HeartBeat

    开发过程中经常遇到定时触发的需求,如:TCP/IP连接中,使用心跳包保持连接或检测连接是否已经中断. WPF中有多种定时器: 1.using System.Windows.Threading; 代码如 ...

随机推荐

  1. [swustoj 1095] 挖金子

    挖金子(1095) 题目描述 你在一个N*M的区域中,一开始在(1,1)的位置,每个位置有可能有金子,也有可能不能到达,也有可能有传送门.你只能往右或者下走,不能走出这个区域.当你位于传送门时,传送门 ...

  2. Android使用Webview加载网页

    安卓使用Webview来加载和显示网页内容,首先在layout文件中定义Webview <?xml version="1.0" encoding="utf-8&qu ...

  3. Java [leetcode 13] Roman to Integer

    问题描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  4. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.3.6

    If $A$ is a contraction, show that $$\bex A^*(I-AA^*)^{1/2}=(I-A^*A)^{1/2}A^*. \eex$$ Use this to sh ...

  5. 算法 后减前最大值,zt

    一个人知道未来n天的每天股票的价格,请你给出一个算法,使得这个人从哪天买入,哪天卖出能获得最大的收益. 问题实际上就是求一个数组后面元素减前面元素的最大值 #include <stdio.h&g ...

  6. DNS(一)简介

    最近学习相关DNS知识,顺便总结下相关内容. 1.什么是DNS DNS(Domain Name System)服务,可以使用域名代替复杂的IP地址来访问网络服务器,使得网络服务的访问更加简单,而且可以 ...

  7. NOIP2009 最优贸易

    3. 最优贸易 (trade.pas/c/cpp) [问题描述] C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间 多只有一条道路直接相连.这 m 条道 ...

  8. Max Sub-matrix

    Max Sub-matrix 教练找的题目,目前样列过了 题意:找子矩阵的最大周长 思路:先离散每列,再枚举列(n*n),在当前枚举的两列之间求每行的和(n*n*n),但是开两个数组,一个包含两列上的 ...

  9. HW6.17

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  10. QQMusic绿钻兄,你可安好?我需要晴天。

    不好意思,年纪这样大了,还依靠吐槽来保持呆毛的正能量,实在对不住,先说对不起. QQMusic是我最喜欢的腾讯增值服务,正版内容,海量歌手,高清下载.实在是音乐软件中高大上的典范,除了歌手排名中前十中 ...