zoukankan      html  css  js  c++  java
  • tcp心跳模型

    1. 客户端写空闲4s发一次心跳

    2. 服务端收到心跳回复

    3. 服务端读空闲 (n个4s) + x未收到心跳,close channel

    4. 客户端读空闲 (n个4s) + x未收到回复,重连

    5. n取2为推荐,x取1

    对于netty而言:

    客户端:

    	@Override
    	public void userEventTriggered(final ChannelHandlerContext ctx, Object evt) throws Exception {
        	
        	if(evt instanceof IdleStateEvent) {
        		IdleStateEvent event = (IdleStateEvent) evt;
        		if(event.state() == IdleState.WRITER_IDLE) {
    // 好久(30s)没给服务端传数据了,给个心跳^^ping sendHeartbeat(ctx); } else if (event.state() == IdleState.READ_IDLE) { ctx.close(); logger.warn("服务端好几次未回传pong"); } } }

      R 61 W 30

    服务端:

    	@Override
    	public void userEventTriggered(final ChannelHandlerContext ctx, Object evt)
        		throws Exception {
        	
        	Channel channel = ctx.channel();
        	if(evt instanceof IdleStateEvent) {
        		IdleStateEvent event = (IdleStateEvent) evt;
        		if(event.state() == IdleState.READ_IDLE) {
        			logger.debug("客户端按约定已经n次超时未传输数据过来");
            		channel.close();
        		}
        	}
        }
    

      R 61

    https://stackoverflow.com/questions/10585355/sending-websocket-ping-pong-frame-from-browser

    关于本文的实践位于:https://www.cnblogs.com/silyvin/articles/9796887.html

  • 相关阅读:
    du 命令
    iostat 命令
    sar 命令
    mkdir 命令
    time 命令
    date 命令
    history 命令
    vmstat 命令
    pmap 命令
    df 命令
  • 原文地址:https://www.cnblogs.com/silyvin/p/9605033.html
Copyright © 2011-2022 走看看