项目:happylifeplat-transaction
文件:NettyClientMessageHandler.java
@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();
}
}
}
项目:fastdfs-spring-boot
文件:FastdfsHandler.java
@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.");
}
}
项目:os
文件:ChatServerHandler.java
/**
* 心跳处理
*
* @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;
}
}
}
项目:JavaQuarkBBS
文件:UserAuthHandler.java
/**
* 内部链路检测
* @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()));
}
}
}
项目:tx-lcn
文件:TransactionHandler.java
@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) {
//表示已经多久既没有收到也没有发送数据了
}
}
}
项目:rocketmq-rocketmq-all-4.1.0-incubating
文件:NettyRemotingClient.java
@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);
}
项目:rocketmq-rocketmq-all-4.1.0-incubating
文件:NettyRemotingServer.java
@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,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:GoPush
文件:NodeChannelInBoundHandler.java
@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);
}
}
项目:GoPush
文件:NodeChannelInBoundHandler.java
@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);
}
}
项目:GoPush
文件:DeviceChannelInboundHandler.java
@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);
}
}
项目:reading-and-annotate-rocketmq-3.4.6
文件:NettyRemotingClient.java
@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);
}
项目:reading-and-annotate-rocketmq-3.4.6
文件:NettyRemotingServer.java
@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,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:ConfigCenter
文件:NettyRemotingClient.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,remoteAddress);
closeChannel(ctx.channel());
if (NettyRemotingClient.this.channelEventListener != null) {
NettyRemotingClient.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:ConfigCenter
文件:NettyRemotingServer.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,remoteAddress);
RemotingUtil.closeChannel(ctx.channel());
if (NettyRemotingServer.this.channelEventListener != null) {
NettyRemotingServer.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:HappyChat
文件:UserAuthHandler.java
@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);
}
项目:qonduit
文件:WebSocketRequestDecoder.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent idle = (IdleStateEvent) evt;
if (idle.state() == IdleState.READER_IDLE) {
// We have not read any data from client in a while,let's close
// the subscriptions for this context.
LOG.info("Client {} is idle",ctx.channel());
}
} else if (evt instanceof SslCompletionEvent) {
SslCompletionEvent ssl = (SslCompletionEvent) evt;
if (!ssl.isSuccess()) {
LOG.error("SSL error: {}",ssl.getClass().getSimpleName(),ssl.cause());
}
} else {
LOG.warn("Received unhandled user event {}",evt);
}
}
项目:azeroth
文件:FastdfsHandler.java
@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.");
}
}
项目:NioSmtpClient
文件:KeepAliveHandler.java
@Override
protected void channelIdle(ChannelHandlerContext ctx,IdleStateEvent evt) throws Exception {
LOG.debug("[{}] Sending NOOP to keep the connection alive",connectionId);
if (expectingNoopResponse) {
LOG.warn("[{}] Did not receive a response to our last NOOP,will not send another",connectionId);
return;
}
Optional<String> debugString = responseHandler.getPendingResponseDebugString();
if (debugString.isPresent()) {
LOG.warn("[{}] Waiting for a response to [{}],will not send a NOOP to keep the connection alive",connectionId,debugString.get());
} else {
LOG.debug("[{}] Sending NOOP",connectionId);
ctx.channel().writeAndFlush(new DefaultSmtpRequest(SmtpCommand.NOOP));
expectingNoopResponse = true;
}
}
项目:sds
文件:SocketHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
//心跳配置
if (IdleStateEvent.class.isAssignableFrom(evt.getClass())&& socketService.getSocketEventService().hasOpenHeartCheck()) {
IdleStateEvent event = (IdleStateEvent) evt;
String uniqueKey = ctx.channel().remoteAddress().toString();
if (event.state() == IdleState.READER_IDLE) {
//表示已经多久没有收到数据了
socketService.getSocketEventService().onHeartNoReadDataListener(ctx,uniqueKey);
} else if (event.state() == IdleState.WRITER_IDLE) {
//表示已经多久没有发送数据了
socketService.getSocketEventService().onHeartNoWriteDataListener(ctx,uniqueKey);
} else if (event.state() == IdleState.ALL_IDLE) {
//表示已经多久既没有收到也没有发送数据了
}
}
}
项目:rmq4note
文件:NettyRemotingClient.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:rmq4note
文件:NettyRemotingServer.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:jeesupport
文件:NettyHandler.java
/**
* 利用事件变化来做心跳检测
*/
@Override
public void userEventTriggered( ChannelHandlerContext _ctx,Object _obj ) throws Exception {
logger.debug( _handler_info( _ctx,"userEventTriggered" ) );
if ( _obj instanceof IdleStateEvent ) {
IdleStateEvent event = ( IdleStateEvent ) _obj;
if ( event.state() == IdleState.READER_IDLE ) {
lost++;
logger.debug( _handler_info( _ctx," inactive with=" + lost ) );
if ( lost > 2 ) {
handler.stand( _ctx );
logger.debug( _handler_info( _ctx," was stand with=" + lost ) );
}
}
} else {
logger.warn( _handler_info( _ctx," was discard" ) );
}
}
项目:fastdfs-client
文件:FastdfsHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,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.");
}
}
项目:java_learn
文件:ServerHandler.java
@Override
public void userEventTriggered(final ChannelHandlerContext ctx,Object evt)
throws Exception {
if(evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.READER_IDLE) {
System.out.println("--- Reader Idle ---");
ctx.writeAndFlush("读取等待:客户端你在吗... ...\r\n");
} else if (event.state() == IdleState.WRITER_IDLE) {
System.out.println("--- Write Idle ---");
ctx.writeAndFlush("写入等待:客户端你在吗... ...\r\n");
} else if (event.state() == IdleState.ALL_IDLE) {
System.out.println("--- All_IDLE ---");
ctx.writeAndFlush("全部时间:客户端你在吗... ...\r\n");
}
}else{
super.userEventTriggered(ctx,evt);
}
}
项目:esjc
文件:HeartbeatHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
synchronized (timeoutTaskLock) {
if (timeoutTask == null) {
ctx.writeAndFlush(TcpPackage.newBuilder()
.command(TcpCommand.HeartbeatRequestCommand)
.correlationId(UUID.randomUUID())
.build());
timeoutTask = ctx.executor().schedule(() -> {
logger.info("Closing TCP connection [{},L{}] due to HEARTBEAT TIMEOUT.",ctx.channel().remoteAddress(),ctx.channel().localAddress());
ctx.close();
},timeoutMillis,MILLISECONDS);
}
}
}
}
项目:sailfish
文件:HeartbeatChannelHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
int maxIdleTimeout = ctx.channel().attr(ChannelAttrKeys.maxIdleTimeout).get();
long expireTime = System.currentTimeMillis() - ctx.channel().attr(ChannelAttrKeys.lastReadTimeMillis).get();
if (expireTime >= maxIdleTimeout * 1000) {
logger.warn("readIdleTimeout exceed maxIdleTimeout,real timeout {},this channel[{}] will be closed",expireTime,ctx.channel().toString());
ChannelUtil.closeChannel(ctx.channel());
} else if (ChannelUtil.clientSide(ctx)) {
// send heart beat to remote peer
ctx.writeAndFlush(RequestProtocol.newHeartbeat());
}
} else {
ctx.fireUserEventTriggered(evt);
}
}
项目:study-netty
文件:HeartbeatServerHandler.java
/**
* 判断是否是IdleStateEvent事件,是则处理
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if(evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
String type = "";
if(event.state() == IdleState.READER_IDLE)
type = "read idle";
else if(event.state() == IdleState.WRITER_IDLE)
type = "write idle";
else if(event.state() == IdleState.ALL_IDLE)
type = "all idle";
//
ChannelFuture f = ctx.writeAndFlush(HEARTBEAT_SEQUENCE.duplicate());
f.addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
System.out.println(ctx.channel().remoteAddress() + "超时类型 : " + type);
} else {
super.userEventTriggered(ctx,evt);
}
}
项目:timely
文件:WebSocketRequestDecoder.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,let's close
// the subscriptions for this context.
String subscriptionId = ctx.channel().attr(SubscriptionRegistry.SUBSCRIPTION_ID_ATTR).get();
if (!StringUtils.isEmpty(subscriptionId)) {
if (SubscriptionRegistry.get().containsKey(subscriptionId)) {
LOG.info("Closing subscription with subscription id {} due to idle event",subscriptionId);
SubscriptionRegistry.get().get(subscriptionId).close();
}
} else {
LOG.warn("Channel idle,but no subscription id found on context. Unable to close subscriptions");
}
}
} else if (evt instanceof SslCompletionEvent) {
SslCompletionEvent ssl = (SslCompletionEvent) evt;
if (!ssl.isSuccess()) {
LOG.error("SSL error: {}",evt);
}
}
项目:riposte
文件:DownstreamIdleChannelTimeoutHandler.java
@Override
protected void channelIdle(ChannelHandlerContext ctx,IdleStateEvent evt) throws Exception {
if (!disabled && shouldKillIdleChannelNowSupplier.get()) {
String reason = (isActiveDownstreamCallTimer)
? "Throwing call timeout error because the active downstream call took longer than the "
+ "allowed timeout value."
: "Closing downstream channel because it was sitting unused for too long between calls.";
AsyncNettyHelper.runnableWithTracingAndMdc(
() -> logger.debug("{} custom_handler_id={},idle_timeout_millis={},worker_channel_throwing_error={}",reason,customHandlerIdForLogs,idleTimeoutMillis,ctx.channel().toString()),traceStackForLogging,mdcInfoForLogging
).run();
throw new DownstreamIdleChannelTimeoutException(idleTimeoutMillis,ctx.channel());
}
}
项目:riposte
文件:IncompleteHttpCallTimeoutHandler.java
@Override
protected void channelIdle(ChannelHandlerContext ctx,IdleStateEvent evt) throws Exception {
if (alreadyTriggeredException) {
runnableWithTracingAndMdc(
() -> logger.error(
"IncompleteHttpCallTimeoutHandler triggered multiple times - this should not happen."
),ctx
).run();
return;
}
channelIdleTriggered(ctx,evt);
alreadyTriggeredException = true;
throw new IncompleteHttpCallTimeoutException(idleTimeoutMillis);
}
项目:netty-tutorials
文件:NettyConnHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent e = (IdleStateEvent) evt;
if (e.state() == IdleState.READER_IDLE) {
logger.info("READER_IDLE 事件触发,关闭连接");/*读超时*/
ctx.close();
} else if (e.state() == IdleState.WRITER_IDLE) {
logger.info("WRITER_IDLE 事件触发");
ctx.writeAndFlush(new PingMessage());
} else if (e.state() == IdleState.ALL_IDLE) {
logger.info("ALL_IDLE 事件触发,关闭连接");
ctx.close();
}
}
}
项目:jeesuite-libs
文件:FastdfsHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,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.");
}
}
项目:rocketmq-commet
文件:NettyRemotingClient.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:rocketmq-commet
文件:NettyRemotingServer.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,remoteAddress);
RemotingUtil.closeChannel(ctx.channel());
if (NettyRemotingServer.this.channelEventListener != null) {
NettyRemotingServer.this
.putNettyEvent(new NettyEvent(NettyEventType.IDLE,ctx.channel()));
}
}
}
ctx.fireUserEventTriggered(evt);
}
项目:coco
文件:HeartBeatHandler.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
super.userEventTriggered(ctx,evt);
// 拦截链路空闲事件并处理心跳
if (evt instanceof IdleStateEvent) {
// 心跳处理
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state().equals(IdleState.READER_IDLE)) {
// 未进行读操作, 服务器端主动关闭连接
LOGGER.warn("READER_IDLE,client maybe not exist,we will close the chnnel");
if (ctx.channel().isOpen()) {
ctx.close();
}
ctx.close();
} else if (event.state().equals(IdleState.WRITER_IDLE)) {
// 未进行写操作,nothing todo
// LOGGER.info("WRITER_IDLE,long time not write something to client");
} else if (event.state().equals(IdleState.ALL_IDLE)) {
// 未进行读写
// LOGGER.info("ALL_IDLE,long time not to write or read");
// 发送心跳消息
// MsgHandleService.getInstance().sendMsgUtil.sendHeartMessage(ctx);
}
}
}
项目:light-task-scheduler
文件:NettyRemotingClient.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
Channel channel = new NettyChannel(ctx);
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(channel);
if (event.state().equals(io.netty.handler.timeout.IdleState.ALL_IDLE)) {
LOGGER.warn("CLIENT : IDLE [{}]",remoteAddress);
closeChannel(channel);
}
if (channelEventListener != null) {
RemotingEventType remotingEventType = RemotingEventType.valueOf(event.state().name());
putRemotingEvent(new RemotingEvent(remotingEventType,channel));
}
}
ctx.fireUserEventTriggered(evt);
}
项目:light-task-scheduler
文件:NettyRemotingServer.java
@Override
public void userEventTriggered(ChannelHandlerContext ctx,Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
com.lts.remoting.Channel channel = new NettyChannel(ctx);
final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(channel);
if (event.state().equals(IdleState.ALL_IDLE)) {
LOGGER.warn("SERVER: IDLE [{}]",remoteAddress);
RemotingHelper.closeChannel(channel);
}
if (channelEventListener != null) {
RemotingEventType remotingEventType = RemotingEventType.valueOf(event.state().name());
putRemotingEvent(new RemotingEvent(remotingEventType,channel));
}
}
ctx.fireUserEventTriggered(evt);
}