Hi,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是:https://qinyuanpei.github.io。今天这篇博客,我们来说说WebSocket。各位可能会疑惑,为什么我会突然间对WebSocket感兴趣,这是因为最近接触到了部分“实时”的业务场景,譬如:用户希望在远程视频通话过程中,实时地监控接入方的通话状态,实时地将接入方的响应时间、通话时长以及接通率等信息推送到后台。与此同时,用户可以通过监控平台看到实时变化着的图表。坦白地讲,这种业务场景陌生吗?不,每一年的双11,都能见到小伙伴们实时地“剁手”。所以,在今天这篇文章中,我们会以WebSocket聊天室为例,来讲解如何基于WebSocket构建实时应用。
WebSocket概述
WebSocket是HTML5标准中的一部分,从Socket这个字眼我们就可以知道,这是一种网络通信协议。WebSocket是为了弥补HTTP协议的不足而产生的,我们知道,HTTP协议有一个重要的缺陷,即:请求只能由客户端发起。这是因为HTTP协议采用了经典的请求-响应模型,这就限制了服务端主动向客户端推送消息的可能。与此同时,HTTP协议是无状态的,这意味着连接在请求得到响应以后就关闭了,所以,每次请求都是独立的、上下文无关的请求。这种单向请求的特点,注定了客户端无法实时地获取服务端的状态变化,如果服务端的状态发生连续地变化,客户端就不得不通过“轮询”的方式来获知这种变化。毫无疑问,轮询的方式不仅效率低下,而且浪费网络资源