首页 > 开发 > NodeJS > 正文

keep-alive和websocket区别

2017-09-08 17:13:17  来源:网友分享

keep-alive是长连接吗?仅仅为了复用TCP连接吗?和websocket的长连接有什么区别?

解决方案

长连接是一个很宽泛的词,实现长连接的协议很多,例如websocket,MQTT等。

keep-alive一般是表示保持连接标识,即复用TCP连接。许多协议都也喜欢通过这个字段来表示。比如http使用keep-alive就可以让http客户端和服务端通信的时候,不至于每个请求都重新握手创建连接。由于HTTP1.1不是全双工,发送了request就得等response。用在redis的RESP协议中,也表示redis复用tcp连接。在websocket协议中,也要指定keep-alive模式。

websocket其实是一个协议,即客户端和服务器可以进行全双工通信。客户端发送请求给服务器的同时,服务器也可以发送数据给客户端。在我的理解,keep-alive和websocket不是一个维度概念。也有人喜欢称keepalive模式为持久连接。