go语言socket框架之心跳包处理

前言:

本次我们来讲解怎么在自己的框架里面增加心跳处理。已经把所有代码整合了,希望给个星星支持一下 microSocket

心跳处理的必要性:

服务端需要同时处理上千甚至上万的客户端的连接,所以每个连接资源都是很宝贵的,当客户端断开连接的时候服务端应该及时移除该连接。
正常情况下,客户端断开连接的时候,会和服务端进行四次挥手,服务端就会知道这个连接 已经不能用了优雅的退出监听消息。但是总会有意外,比如客户端忽然断网了,没电了,这个时候客户端肯定不可能按照流程和 服务端进行挥手,不知道消息的 服务端还傻傻的在哪儿等着,不知道客户端早就走了
这个时候 心跳包就很完美的解决了此问题。客户端和服务端约定好每隔一段时间 就会发消息,如果服务端每过一段时间没有收到客户端 的心跳消息 就说明 客户端出事了,服务端就删除此连接,确保 资源最大化。
一般心跳包就是 符合该协议的 最小包

实现思路:

一般的go语言框架都是一个连接单独开一个协程 去处理读取超时问题,我承认协程是很廉价,但是总不至于这么浪费吧,当协程数量多到一定程度的时候,协程之间的调度也是一个很大的 消耗,所以我没有采用这种思路。
经过我的苦思冥想终于被我想到了自认为比较好的方法,实现了,一个协程 进行 心跳检测。

  • . 每当一个连接成功接收到消息的时候,就在该连接对象 上设
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值