客户端发送心跳包用http和socket的区别

客户端发送心跳包是用http还是socket,两者各自的优缺点是什么?

阅读 6.9k
4 个回答

一个是主动请求 ,一个是常连接的双向管道

我们用 http,优势:

  1. 实现简单
  2. 非游戏应用,实时性要求低,心跳频率低

难道用http的形式,可以服务端通知客户端么?能实现的方法也比较麻烦,没有socket那么方便

  1. 发送心跳包的目的一般是为了保持连接,客户端的HTTP请求无状态,用完即断,除了还在传输的时候需要保持连接(这个时候也不需要心跳啊),我想不到需要心跳保持的情况。

    1. 如果你是为了通过发送一个HTTP请求保持其他业务的心跳,那很方便。
    2. 如果你说的是serversentevent 心跳保持就是服务端随便推个字符,浏览器客户端忽略这个特殊心跳数据就完了,因为如果浏览器长时间没有收到数据,这个HTTP请求也会断掉。
  2. 至于socket双向支持心跳发送接收信息可以很简单,实时性很高,上面我说的HTTP相关内容都是在客户端为浏览器的情况下,在浏览器上直接支持的就是HTTP,如果使用socket,webbsocket的话服务端也需要特殊订制,难度高于普通HTTP以及SSE。如果不使用websocket而是基础socket的话,浏览器不支持,需要特定的客户端。

总结一下: HTTP在浏览器上方便、socket在浏览器上不方便、socket实时性更好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进