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

  • 相关阅读:
    unordered_set
    树的所有实现
    各类算法模板
    单链表全部实现(绝对史上最完整 附例题)
    求最长回文子串
    无重复的最长子串
    秋叶集
    1451. 重新排列句子中的单词
    152. 乘积最大子数组
    JVM总结的部分内容
  • 原文地址:https://www.cnblogs.com/silyvin/p/9605033.html
Copyright © 2011-2022 走看看