【websocket】WebSocket协议的原理

一、关于WebSocket协议

 

我们需要弄明白,WebSocket本质上一种计算机网络应用层的协议,用来弥补http协议在持久通信能力上的不足。

我们知道http协议本身是无状态协议,每一个新的http请求,只能通过客户端主动发起,通过 建立连接-->传输数据-->断开连接 的方式来传输数据,传送完连接就断开了,也就是这次http请求已经完全结束了(虽然http1.1增加了keep-alive请求头可以通过一条通道请求多次,但本质上还是一样的)。

并且服务器是不能主动给客户端发送数据的(因为之前的请求得到响应后连接就断开了,之后服务器根本不知道谁请求过),客户端也不会知道之前请求的任何信息。

 

所以说,http协议本身是没有持久通信能力的,但是我们在实际的应用中,是很需要这种能力的,所以WebSocket协议由此而生,于2011年被IETF定为标准RFC6455,并被RFC7936所补充规范。

并且在HTML5标准中增加了有关WebSocket协议的相关api,所以只要实现了HTML5标准的客户端,就可以与支持WebSocket协议的服务器进行全双工的持久通信了。

 

说明:

1. 这里的持久通信能力指的是协议本身的能力,我们当然可以通过编程的方式实现这种功能,比如轮询的方式,但谁不喜欢原生就支持呢?

2.  计算机网络里还有socket关键字,这里的socket指的是运输层协议的某一端,泛指某个应用程序。

3.  unix编程里还有一个socket接口,这里的译名是套接字,泛指应用层协议的端口号。

 

WebSocket协议的原理

与http协议一样,WebSocket协议也需要通过已建立的TCP连接来传输数据。

具体实现上是通过http协议建立通道,然后在此基础上用真正的WebSocket协议进行通信,所以WebSocket协议和http协议是有一定的交叉关系的。

 

 

下面是WebSocket协议请求头:

 

其中请求头中重要的字段:

 

而得到的响应头中重要的字段:

 


二、WebSocket协议的优缺点

优点:

· WebSocket协议一旦建议后,互相沟通所消耗的请求头是很小的

· 服务器可以向客户端推送消息了

缺点:

· 少部分浏览器不支持,浏览器支持的程度与方式有区别

 

三、WebSocket协议的应用场景

· 即时聊天通信

· 多玩家游戏

· 在线协同编辑/编辑

· 实时数据流的拉取与推送

· 体育/游戏实况

· 实时地图位置

 

 

四、参考

 

WebSocket 教程

http://www.ruanyifeng.com/blog/2017/05/websocket.html

http://websocket.org

http://demos.kaazing.com/portfolio-web/index.html

 

websocket协议翻译

https://github.com/zhangkaitao/websocket-protocol

 

网络编程-基于Websocket聊天室(IM)系统

https://www.cnblogs.com/maxzuo/p/13027982.html

 

WebSocket 是什么原理?为什么可以实现持久连接?

https://www.zhihu.com/question/20215561

 

nodejs的websocket的服务器端是如何实现的?

https://www.zhihu.com/question/37647173/answer/1403359896

HTTP API 认证授权术

https://coolshell.cn/articles/19395.html#OAuth_2_0

 

HTTP API认证授权方案

https://www.cnblogs.com/maxzuo/p/14017929.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值