webscoket 的定义

一直没闹明白websocket  ,  对比下长连接就容易懂了许多。以下摘录

参考网址http://cnodejs.org/topic/5680fa00952147b71ea37144


长连接应该是,客户端往服务器端发送一个http请求,然后服务端等到任务完成之后才返回。这个任务完成的时间可以是几个小时,而一般的http请求得到返回的时间没那么长。客户端得到服务器端返回的信息之后,马上又发一个请求,然后服务器端继续前面的事情,也就是不立即返回,等有了新的信息之后再返回。websocket是指客户端和服务器之间建立一个websockt连接,然后客户端可以给服务器发信息,服务器也可以给客户端发信息。从行为上来说,对比长连接,服务器的不需要把请求hold住,而客户端也不需要接收一次信息后再立刻发送请求。在没有websocket之前,只有长连接可以选择。


你可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling 是指从客户端(一般就是浏览器)不断主动的向服务器发 HTTP 请求查询是否有新数据。这两种模式有一个共同的缺点,就是除了真正的数据部分外,服务器和客户端还要大量交换 HTTP header,信息交换效率很低。它们建立的“长连接”都是伪.长连接,只不过好处是不需要对现有的 HTTP server 和浏览器架构做修改就能实现。

WebSocket 解决的第一个问题是,通过第一个 HTTP request 建立了 TCP 连接之后,之后的交换数据都不需要再发 HTTP request了,使得这个长连接变成了一个真.长连接。但是不需要发送 HTTP header就能交换数据显然和原有的 HTTP 协议是有区别的,所以它需要对服务器和客户端都进行升级才能实现。在此基础上 WebSocket 还是一个双通道的连接,在同一个 TCP 连接上既可以发也可以收信息。此外还有 multiplexing 功能,几个不同的 URI 可以复用同一个 WebSocket 连接。这些都是原来的 HTTP 不能做到的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值