zoukankan      html  css  js  c++  java
  • 长连接心跳机制理解

    近期使用go 开发聊天室,使用到websocket常链接。

    if err = websocket.JSON.Receive(ws,&reply); err != nil {
            log.Println(err)
            return 
    }

    我发现当连接断开的时候会走if里面,输出eof

    这样就知道,客户端断开了连接。

    但在之前使用workerman 中发现其中有一块是《心跳机制》,这个心跳机制也是判断链接是否断开。

    所以我就觉得判断链接是否断开了,这个功能是不是重复了。或者心跳机制是不是多余的。(个人理解)

    先说下我查阅资料得到的对心跳机制的理解

      心跳机制是客户端,自己发送心跳包给服务端来检测链接是否正常。大致方法是在客户端写一个定时器,定时向服务端发送一个短小精悍的包。然后服务端接收到包再返回给客户端一条信息。每次一套:客户端发送包->服务端接收返回相应->客户端接受相应;正常执行,表示该链接正常。否则则认为断线。

      心跳包会像心跳一样每隔固定时间发送一次。

      理解来源:http://www.codeweblog.com/socket%E5%BF%83%E8%B7%B3%E5%8C%85%E6%9C%BA%E5%88%B6/

    对于服务端中获取断线输出eof和心跳机制个人理解

      可能是如果只是通过服务端来判断链接是否正常,是不稳定的,或者只通过服务端判断链接是否正常的话无法控制客户端断线后的提示、操作。所以在客户端也需要一个心跳机制,双重判断链接是否正常。这样当链接断开后,服务端可以有操作(删除服务端在线列表中该用户等),客户端也可以有操作(重新发送登录请求,或提示用户等),这样既可以保证程序的正常使用,也可以提高用户体验。

      个人观点!

  • 相关阅读:
    简简单单的 JavaScript简写技巧
    常用的前端小知识
    nuxt项目部署对静态页重编译问题
    docker 容器部署nuxt项目
    mysql数据库损坏修复问题
    storm supervisor和nimbus启动自动消失的问题
    MATLAB基础知识
    音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
    处理树状结构数据以及 React渲染
    React Hooks 获取最新数据问题
  • 原文地址:https://www.cnblogs.com/jackylee92/p/6207473.html
Copyright © 2011-2022 走看看