【网络编程】——websocket简介

WebSocket简介

    WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在web浏览器和服务器进行频繁双向通信时,可以使服务器避免打开多个Http连接进行工作来节约资源,提高工作效率和资源利用率。

为什么TCP不行?

    在早期,网站只是一些简单静态页面。用户请求request网站页面,网站回复response页面内容给用户浏览器。需求简单,所以没有复杂的协议过程。这种形式的request/response交互流程,就是基于TCP协议三次握手。而且每次交互完成后浏览器和服务端都会断开,等待需要的时候重新连接。


    现在随着互联网技术发展,用户数逐渐加大,web服务器同时处理的用户数也达到了10K以上级别,为了缓解服务器压力,希望每次request/response后继续保持连接,对于同一个TCP连接,多次重复使用,这同时也是HTTP/1.1协议中长连接的主内容。

    伴随移动互联网的发展,大量移动终端和其上的app应用接入网络,HTML5技术的提出,以便支持实施游戏,实时聊天等。所以催生服务器有更新时,需要立即将数据发送到客户端,也是基于服务器端的推送技术。

Websocket前身

之前有两种解决方案:1)轮询:客户端设置一个时间间隔,时间到,向服务发送request询问有无新数据,有则携带更新数据2)利用长连接,客户端请求新的数据request,服务器会阻塞请求,,直到有新数据response返回客户端。上述两种方式其实相差不多,不仅服务端处于一种极其被动的地方,而且TCP连接会消耗大量的资源。服务端应该是一个主动的行为,而且服务端向客户端推送更新,如果被动,对低延迟的应用体验不好。如果能在单一TCP连接中,使用双向通行(全双工通行)就能很好的解决问题,故WebSocket技术的缘由。

WebSocket技术

一张图解释WebSocket实现高明之处。

          

    在一次TCP连接之后,建立一个管道,客户端和服务端都可以进行任务的收发。websocket是html5的内容,克服html每次通讯都必须重新连接的,无法事实通讯的缺点

使用WebSocket技术的优点

    1、通过一次HTTP Request建立了连接之后,后续的数据交换都不用再重新连接,在访问量大的情况下节省带宽资源

    2、WebSocket的连接是双向通行的连接,在同一个TCP连接上,既可以发送,也可以接收

    3、具有多路复用的功能,几个不同的URL还是复用同一个WebSocket连接。

使用WebSocket技术的缺点

    1、只需一次HTTP Request之后一直保持通行,但是一直通行会占用带宽资源。如果服务器长期维护长连接需要一定的成本。各个浏览器支持程度不一

    2、双向通行,在服务端封装的很好,但是在客户端并没有很好的解决方案,例如资源释放的问题。

WebSocket应用场景

   一般都是消息推送,实时通信,实时游戏等。其实小编最早接触WebSocket是为了应用一个在线考试的系统中,业务主要是考生答题后需要实时将答案插入系统中,而此时会出现客户端与服务端断开联系的现象,造成答题记录丢失的现象。为了避免此现象对客户端利用WebSocket进行实时监控,当断开连接后,维护人员及时发现,才去响应的措施。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mandy_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值