本文整理匯總了Java中io.netty.handler.timeout.IdleStateEvent類的典型用法代碼示例。如果您正苦於以下問題:Java IdleStateEvent類的具體用法?Java IdleStateEvent怎麽用?Java IdleStateEvent使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
IdleStateEvent類屬於io.netty.handler.timeout包,在下文中一共展示了IdleStateEvent類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
//心跳配置
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.READER_IDLE) {
SpringBeanUtils.getInstance().getBean(NettyClientService.class).doConnect();
} else if (event.state() == IdleState.WRITER_IDLE) {
//表示已經多久沒有發送數據了
HEART_BEAT.setAction(NettyMessageActionEnum.HEART.getCode());
ctx.writeAndFlush(HEART_BEAT);
LogUtil.debug(LOGGER, () -> "向服務端發送的心跳");
} else if (event.state() == IdleState.ALL_IDLE) {
//表示已經多久既沒有收到也沒有發送數據了
SpringBeanUtils.getInstance().getBean(NettyClientService.class).doConnect();
}
}
}
示例2: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
// read idle event.
if (evt == IdleStateEvent.FIRST_READER_IDLE_STATE_EVENT
|| evt == IdleStateEvent.READER_IDLE_STATE_EVENT) {
if (null != operation) {
throw new FastdfsReadTimeoutException(
String.format(
"execute %s read timeout.",
operation
)
);
}
return;
}
// all idle event.
if (evt == IdleStateEvent.FIRST_ALL_IDLE_STATE_EVENT
|| evt == IdleStateEvent.ALL_IDLE_STATE_EVENT) {
throw new FastdfsTimeoutException("fastdfs channel was idle timeout.");
}
}
示例3: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
/**
* 心跳處理
*
* @param ctx 連接上下文
* @param evt 狀態事件
* @throws Exception 異常
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
switch (event.state()) {
case READER_IDLE:
//讀超時 直接關閉連接
ctx.close();
LOG.info("READER_IDLE 讀超時");
break;
case WRITER_IDLE:
//寫超時 TODO 重新發送心跳包
LOG.info("WRITER_IDLE 寫超時");
break;
case ALL_IDLE:
//總超時 直接關閉連接
ctx.close();
LOG.info("ALL_IDLE 總超時");
break;
}
}
}
示例4: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
/**
* 內部鏈路檢測
* @param ctx
* @param evt
* @throws Exception
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
//當通道空閑時由IdleStateHandler觸發的用戶事件
if (evt instanceof IdleStateEvent){
IdleStateEvent event = (IdleStateEvent) evt;
// 判斷Channel是否讀空閑, 讀空閑時移除Channel
if (event.state().equals(IdleState.READER_IDLE)) {
final String address = NettyUtil.parseChannelRemoteAddr(ctx.channel());
logger.warn("Netty Server UserAuthHandler: IDLE exception :{}", address);
manager.removeChannel(ctx.channel());
//廣播用戶數量
manager.broadMessage(QuarkChatProtocol.buildSysUserInfo(manager.getUsers()));
}
}
}
示例5: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
//心跳配置
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.READER_IDLE) {
//表示已經多久沒有收到數據了
//ctx.close();
} else if (event.state() == IdleState.WRITER_IDLE) {
//表示已經多久沒有發送數據了
SocketUtils.sendMsg(ctx, heartJson);
logger.info("心跳數據---" + heartJson);
} else if (event.state() == IdleState.ALL_IDLE) {
//表示已經多久既沒有收到也沒有發送數據了
}
}
}
示例6: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY CLIENT PIPELINE: IDLE exception [{}]", remoteAddress);
closeChannel(ctx.channel());
if (NettyRemotingClient.this.channelEventListener != null) {
NettyRemotingClient.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE, remoteAddress, ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例7: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
/**
*IdleStateEvent事件,在指定時間沒有進行讀寫,會進行回調
*/
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY SERVER PIPELINE: IDLE exception [{}]", remoteAddress);
RemotingUtil.closeChannel(ctx.channel()); //關閉channel
if (NettyRemotingServer.this.channelEventListener != null) {
NettyRemotingServer.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE, remoteAddress, ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例8: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
Channel channel = ctx.channel();
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.ALL_IDLE) {
//發送心跳
channel.writeAndFlush(PING);
}
if (event.state() == IdleState.READER_IDLE) {
//發送心跳
channel.writeAndFlush(PING);
}
if (event.state() == IdleState.WRITER_IDLE) {
channel.writeAndFlush(PING);
}
} else {
super.userEventTriggered(ctx, evt);
}
}
示例9: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
Channel channel = ctx.channel();
dataCenterChannelStore.isDcChannelToSave(channel);
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.ALL_IDLE) {
//發送心跳
channel.writeAndFlush(PING);
}
if (event.state() == IdleState.READER_IDLE) {
//發送心跳
channel.writeAndFlush(PING);
}
if (event.state() == IdleState.WRITER_IDLE) {
channel.writeAndFlush(PING);
}
} else {
super.userEventTriggered(ctx, evt);
}
}
示例10: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.READER_IDLE) {
ctx.writeAndFlush(PING);
}
if (event.state() == IdleState.WRITER_IDLE) {
ctx.writeAndFlush(PING);
}
if (event.state() == IdleState.ALL_IDLE) {
ctx.writeAndFlush(PING);
}
} else {
super.userEventTriggered(ctx, evt);
}
}
示例11: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent evnet = (IdleStateEvent) evt;
if (evnet.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY CLIENT PIPELINE: IDLE exception [{}]", remoteAddress);
closeChannel(ctx.channel());
if (NettyRemotingClient.this.channelEventListener != null) {
NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.IDLE,
remoteAddress.toString(), ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例12: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent evnet = (IdleStateEvent) evt;
if (evnet.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY SERVER PIPELINE: IDLE exception [{}]", remoteAddress);
RemotingUtil.closeChannel(ctx.channel());
if (NettyRemotingServer.this.channelEventListener != null) {
NettyRemotingServer.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE, remoteAddress.toString(), ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例13: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent evnet = (IdleStateEvent) evt;
if (evnet.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY CLIENT PIPELINE: IDLE exception [{}]", remoteAddress);
closeChannel(ctx.channel());
if (NettyRemotingClient.this.channelEventListener != null) {
NettyRemotingClient.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE, remoteAddress.toString(), ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例14: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent evnet = (IdleStateEvent) evt;
if (evnet.state().equals(IdleState.ALL_IDLE)) {
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel());
log.warn("NETTY SERVER PIPELINE: IDLE exception [{}]", remoteAddress);
RemotingUtil.closeChannel(ctx.channel());
if (NettyRemotingServer.this.channelEventListener != null) {
NettyRemotingServer.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE, remoteAddress.toString(), ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
示例15: userEventTriggered
import io.netty.handler.timeout.IdleStateEvent; //導入依賴的package包/類
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent evnet = (IdleStateEvent) evt;
// 判斷Channel是否讀空閑, 讀空閑時移除Channel
if (evnet.state().equals(IdleState.READER_IDLE)) {
final String remoteAddress = NettyUtil.parseChannelRemoteAddr(ctx.channel());
logger.warn("NETTY SERVER PIPELINE: IDLE exception [{}]", remoteAddress);
UserInfoManager.removeChannel(ctx.channel());
UserInfoManager.broadCastInfo(ChatCode.SYS_USER_COUNT,UserInfoManager.getAuthUserCount());
}
}
ctx.fireUserEventTriggered(evt);
}