长连接心跳机制理解

近期使用go 开发聊天室,使用到websocket常链接。

if err = websocket.JSON.Receive(ws,&reply); err != nil {log.Println(err)return 
}

我发现当连接断开的时候会走if里面,输出eof

这样就知道,客户端断开了连接。

但在之前使用workerman 中发现其中有一块是《心跳机制》,这个心跳机制也是判断链接是否断开。

所以我就觉得判断链接是否断开了,这个功能是不是重复了。或者心跳机制是不是多余的。(个人理解)

先说下我查阅资料得到的对心跳机制的理解

  心跳机制是客户端,自己发送心跳包给服务端来检测链接是否正常。大致方法是在客户端写一个定时器,定时向服务端发送一个短小精悍的包。然后服务端接收到包再返回给客户端一条信息。每次一套:客户端发送包->服务端接收返回相应->客户端接受相应;正常执行,表示该链接正常。否则则认为断线。

  心跳包会像心跳一样每隔固定时间发送一次。

  理解来源:http://www.codeweblog.com/socket%E5%BF%83%E8%B7%B3%E5%8C%85%E6%9C%BA%E5%88%B6/

对于服务端中获取断线输出eof和心跳机制个人理解

  可能是如果只是通过服务端来判断链接是否正常,是不稳定的,或者只通过服务端判断链接是否正常的话无法控制客户端断线后的提示、操作。所以在客户端也需要一个心跳机制,双重判断链接是否正常。这样当链接断开后,服务端可以有操作(删除服务端在线列表中该用户等),客户端也可以有操作(重新发送登录请求,或提示用户等),这样既可以保证程序的正常使用,也可以提高用户体验。

  个人观点!

转载于:https://www.cnblogs.com/jackylee92/p/6207473.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive的基本操作总结

文章目录目录前言:1、Hive基本操作1.1、DDL操作1.2、DML操作1.3、Hive Join总结:目录 前言: 对于Hive来说最重要的一点就是能够用Hql来进行数据分析。而Hql来处理数据比MapReduce方便很多(原理是一样的,Hql底层转化为MapReduce来…

Hbase读写数据的原理解析

目录1、体系图写数据的流程(参考上图):读数据的流程(参考下图): 目录 1、体系图 针对上图的一些解释: 这里面数据分区(region)存储是为了查询方便(即因为是…

Zookeeper的简介及命令行操作

目录前言1、Zookeeper简介2、Zookeeper结构3、Zookeeper常用的命令行操作 总结: 目录 前言 作为一款第三方的协调服务框架,ZK被应用在许多地方,如:Hbase中用于存储-ROOT表的位置信息;Storm中用于保存任务分配的信息、…

【python】pycharm启动 一直index,无法运行

花了几个小时找相关资料,按网上提供答案操作,依然没有解决, 最后让它自动更新完才好(大概更新了十分钟 有固态情况) 参考链接 pycharm启动后总是不停的updating indices...indexing? pycharm 启动后一直更新index的问题

Zookeeper集群角色分配原理

ZK内部存在Leader和Follower两个角色,那么这两种角色是怎样划分呢?或者说是怎么样被选举出来呢?以下将详细介绍ZK内部的选举机制。 ZK是通过内部的选举算法来选出Leader。(服务器需要配置对应的ID和文件)如下图所示&a…

2016大数据发展7大趋势

1.算法(Algorithms)的崛起 大数据已过时,算法正当道。数据已经成为一种商品,每个组织都能够收集和存储大量的数据。分析大数据也不再那么引人注目了。每个组织都可以聘用或培训大数据分析人员来了解数据模式。 2016年,…

MySQL数据库重点概要总结

目录前言:1、结构化查询语言(Structured Query Language)简称SQL。2、基本SELECT语句语法3、多表链接4、笛卡尔积5、ANSI SQL ANSI SQL:1999标准的连接语法6、单行函数和分组函数的区别:7、分组函数8、SQL语句的执行顺序:9、子查询…

《MySQL排错指南》——1.9 许可问题

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.9节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.9 许可问题 MySQL有复杂的…

毕业半年,码过5个城市

时间飞逝,半年前我还在想我的毕业设计要怎么做,还在担心自己的答辩能够拿多少分,而此刻我正在成都写我喜欢的代码,过着我想过的生活。毕业半年,码过5个城市,从厦门->太原-》合肥-》北京-》成都。2016是我…

《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位

本节书摘来自异步社区《Pro/ENGINEER野火版5.0从入门到精通》一书中的第2章,第2.5节,作者 暴风创新科技,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 设置零件单位 由于不同国家单位制的不相同,在企业间合作或沟通…

机器学习之必知开源数据集

之前看到的不错的文章,玩机器学习数据是关键,有了这些东西,你就不必再为没有数据而苦恼。 转自:https://www.toutiao.com/i6432197108580745730/ 目录UCIGoogleTrendsKaggleAWS公用数据集ImagenetMINIST/r/数据集其他数据集 目录…

《计算机科学概论》—第3章3.3节文本表示法

本节书摘来自华章出版社《计算机科学概论》一书中的第3章,第3.3节文本表示法,作者[美]内尔黛尔(Nell Dale)约翰路易斯(John Lewis),更多章节内容可以访问云栖社区“华章计算机”公众…

经典技术面试指南

目录计算机基础知识数据结构算法操作系统计算机网络数据库海量数据处理C语言基础Java基础Java高级Java Web设计模式知识的综合能力工具使用项目相关技术热情表达能力思考方式其他推荐阅读 目录 最近看到一份不错的面试总结,也是每位程序猿都应该掌握的基础&#x…

Linux 共享内存详解一

共享内存段被多个进程附加的时候,如果不是所有进程都已经调用shmdt,那么删除该共享内存段时,会出现一个临时的不完整的共享内存段(key值是0),无法彻底删除。只有当所有进程都调用shmdt,这个临时…

Storm编程模型总结

目录前言:1、Storm编程模型2、对应的的WordCount案例总结: 目录 前言: 对于Storm的编程模型有必要做一个详细的介绍(配合WC案例来介绍) 1、Storm编程模型 上图中组件的解释: DataSource:外…

13_观察者模式

【观察者模式】 也叫作发布/订阅模式,使用较为频繁。 定义了对象间一种一对多的依赖关系,当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成: * Subject 被观察者 定义被观察者…

《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南》一书中的第2章2.3节 外部或内部的主动式信息收集,作者【美】Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 外部或内部的主动式信息收集黑客秘笈——…

Storm集群的安装及简单使用

目录前言:1、集群部署的基本流程2、Storm常用操作命令(了解)3、Storm集群的进程及日志熟悉(知道对应的日志的位置出了问题知道去哪找原因)4、Storm源码目录分析(重要)总结: 目录 前…

Storm的通信机制

目录前言:1、Worker进程间通信原理2、Worker进程间技术(Netty、ZeroMQ)3、Worker 内部通信技术(Disruptor)总结: 目录 前言: 这篇文章,博客主要介绍下Storm中Worker进程间和进程内部通信的原理和技术。整篇内容仅供了解&#x…

Storm程序的并发机制原理总结

文章目录目录前言:1、概念2、配置并行度总结:目录 前言: 为了在以后的实践中提高Storm程序执行的效率,我们还是有必要了解下对应的Storm程序的并发机制。(哈哈,虽然以博主小菜鸟的水平还没有接触到这种提…