im即时通讯开发之用Netty实现心跳机制、断线重连机制

本文介绍了在即时通讯开发中,如何利用Netty框架实现心跳机制和断线重连。通过IdleStateHandler设置读、写超时,触发心跳包的发送和接收。同时,展示了客户端在连接断开后的重连策略,包括重连次数和时间间隔的控制。

早些年,做IM或推送系统需要面临很多问题,比如:资料少(众所周之的某互联网巨头几乎不分离这方面的资料)、轮子少(Netty这种牛逼的框架出现的有点晚)、难度高(高并发怎么实现?C10K问题呢?)。

现在好了,技术轮子越来越丰富,资料也越来越全(光即时通讯网都整理了IM和推送系统相关的上千篇相关文章)。Netty作为Java语言中的服务端高性能网络编程框架中的佼佼者,应用范围也越来越广,反正我知道不少人用它来撸IM或推送系统(说的就是你~~)。

 

为何需要心跳机制?

所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性。

注:心跳包还有另一个作用,经常被忽略,即:一个连接如果长时间不用,防火墙或者路由器就会断开该连接(PS:术语叫“端口老化”)。

先理解一下核心Handler:IdleStateHandler

在 Netty 中, 实现心跳机制的关键是 IdleStateHandler, 那么这个 Handler 如何使用呢?

先看下它的构造器:

public IdleStateHandler(int readerIdleTimeSeconds, int writerIdleTimeSeconds, int allIdleTimeSeconds) {

    this((long)readerIdleTimeSeconds, (long)writerIdleTimeSeconds, (long)allIdleTimeSeconds, TimeUnit.SECONDS);

}

这里解释下三个参数的含义:

    readerIdleTimeSecond

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值