长连接心跳机制理解

发布时间:2017-6-29 1:19:25 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"长连接心跳机制理解 ",主要涉及到长连接心跳机制理解 方面的内容,对于长连接心跳机制理解 感兴趣的同学可以参考一下。

近期使用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和心跳机制个人理解

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

  个人观点!

上一篇:Create Hierarchical Tree To Control Records In Oracle Forms
下一篇:AngularJS-app.js

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。