本文整理匯總了Java中io.netty.handler.timeout.IdleState.WRITER_IDLE屬性的典型用法代碼示例。如果您正苦於以下問題:Java IdleState.WRITER_IDLE屬性的具體用法?Java IdleState.WRITER_IDLE怎麽用?Java IdleState.WRITER_IDLE使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類io.netty.handler.timeout.IdleState
的用法示例。
在下文中一共展示了IdleState.WRITER_IDLE屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: userEventTriggered
@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
@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) {
//表示已經多久既沒有收到也沒有發送數據了
}
}
}
示例3: userEventTriggered
@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);
}
}
示例4: userEventTriggered
@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);
}
}
示例5: userEventTriggered
@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);
}
}
示例6: userEventTriggered
@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) {
//表示已經多久既沒有收到也沒有發送數據了
}
}
}
示例7: userEventTriggered
@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);
}
}
示例8: userEventTriggered
/**
* 判斷是否是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);
}
}
示例9: userEventTriggered
@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();
}
}
}
示例10: userEventTriggered
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
Channel channel = ctx.channel();
log.error("userEventTriggered={}, object={}", channel, evt);
if (!(evt instanceof IdleStateEvent)) { return; }
if (evt instanceof IdleStateEvent) {
IdleStateEvent e = (IdleStateEvent) evt;
if (e.state() == IdleState.READER_IDLE) {
log.debug("userEventTriggered(readIdle)={}", ctx.channel());
if (isReadBytes == false) ctx.close();
} else if (e.state() == IdleState.WRITER_IDLE) {
log.debug("userEventTriggered(writeIdle)={}", ctx.channel());
if (isReadBytes == false) ctx.close();
} else {
log.debug("userEventTriggered(allIdle)={}", ctx.channel());
if (isReadBytes == false) ctx.close();
}
}
}
示例11: userEventTriggered
@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) {
// logger.info("read idle");
} else if (event.state() == IdleState.WRITER_IDLE) {
// logger.info("write idle");
} else if (event.state() == IdleState.ALL_IDLE) {
JSyncPacket message = new JSyncPacket();
message.setPacketType(2);
ctx.channel().writeAndFlush(message);
logger.info("[Server 鏈路空閑!發送心跳!]" + message);
}
}
}
示例12: userEventTriggered
/**
* When a timeout occurs, notify listener and close the channel.
*
* @param ctx Channel context
* @param evt Event
* @throws Exception
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent event = (IdleStateEvent) evt;
if (event.state() == IdleState.READER_IDLE || event.state() == IdleState.WRITER_IDLE) {
if (originalChannelContext == null) {
originalChannelContext = ctx;
}
if (ctx == originalChannelContext) {
originalChannelContext.fireUserEventTriggered(evt);
isIdleHandlerOfTargetChannelRemoved = true;
} else {
sendTimeoutError(ctx);
}
/*Once a timeout occurs after sending the response, close the channel, otherwise we will still be
getting response data after the timeout, if backend sends data. */
if (ctx != originalChannelContext) {
ctx.close();
}
}
}
}
示例13: userEventTriggered
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof IdleStateEvent) {
IdleStateEvent e = (IdleStateEvent) evt;
if (e.state() == IdleState.WRITER_IDLE) {
if(ctx.hasAttr(ServerConstant.SUSPECT) && ctx.attr(ServerConstant.SUSPECT).get()){
LOGGER.info("suspect {} write idle happened again and close", ctx);
ctx.close();
}else{
LOGGER.info("{} write idle happened and set context suspect true", ctx);
ctx.attr(ServerConstant.SUSPECT).set(true);
ctx.writeAndFlush(Unpooled.wrappedBuffer(MessageFactory.createHeartbeat().toBinary())).addListener(future -> {
if (!future.isSuccess()) {
LOGGER.info("failed to send heartbeat to {} message, cause by {} ", ctx.channel().remoteAddress(), future.cause());
}
});
}
}
}
}
示例14: userEventTriggered
@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");
} else if (e.state() == IdleState.ALL_IDLE) {
LOGGER.info("ALL_IDLE");
// ctx.close(); // 斷開客戶端的連接
}
}
super.userEventTriggered(ctx, evt);
}
示例15: userEventTriggered
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (enableMonitor && evt instanceof IdleStateEvent) {
IdleStateEvent e = (IdleStateEvent) evt;
if (e.state() == IdleState.READER_IDLE && !e.isFirst()) {
/* trigger expired event */
LOG.info("Server has not respond " + ctx.channel());
ctx.fireUserEventTriggered(MonitorStateEvent.MONITOR_EXPIRED_STATE_EVENT);
} else if (e.state() == IdleState.WRITER_IDLE) {
/* send ping packet to remote server */
if(LOG.isDebugEnabled()){
LOG.debug("sending ping request " + ctx.channel());
}
ctx.writeAndFlush(ping.duplicate().retain());
}
}
super.userEventTriggered(ctx, evt);
}