WebScoket 的原理和作用

一、WebScoket 的定义

WebScoket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 不同,它以 ws:// 或 wss:// 开头(分别表示 WebScoket 和安全 WebScoket 连接)。一旦通信连接建立和连接打开后,消息交换将以双向模式进行,不必在浏览器(客户端)发送 request 之后服务器才能发送信息到浏览器,这时候服务器有主动权,可以随时发消息给浏览器(客户端),客户端和服务器之间的连接也会持续存在,直到其中任何一方(客户端或服务器)宕掉或主动关闭连接,双方才关闭连接。

二、为什么使用 WebScoket

因为 HTTP 协议做不到服务器主动向客户端推送信息,即不能实现双向对话的功能。之前使用 "轮询" 的方式:每隔一段时间就向服务器发送一个询问,了解服务器有没有新的信息。这种方式效率低又浪费资源。而 WebScoket 只要和服务器三次握手成功后就可以进行双向通信,使服务器避免打开多个 HTTP 连接进行工作,提高了工作效率和资源利用率。

WebScoket 特点:

  1. 建立在 TCP 协议之上,服务器端的实现比较容易
  2. 与 HTTP 协议有着良好的兼容性。默认端口也是 80 和 443,并且握手阶段采用 HTTP 协议,不容易屏蔽,能通过各种 HTTP 代理服务器
  3. 数据格式比较轻量,性能开销小,通信高效
  4. 可以发送文本,也可以发送二进制数据
  5. 没有同源限制,客户端可以与任意服务器通信
  6. 协议标识符是 ws 或 wss

三、WebScoket 的实现原理

首先还是由客户端发起 HTTP 请求,经过 3 次握手后,建立起 TCP 连接,HTTP 请求里存放了 WebScoket 支持的版本号等信息,如: Upgrade、Connect、WebScoket-Version 等,其中还有一个请求头 Sec-WebScoket-Key,这是客户端使用 base64 编码的 24 位随机字符序列,用于服务器标识当前连接的客户端,同时也要求服务器响应一个同样加密的 Sec-WebScoket-Accept 头作为应答,这个用于给客户端标识当前连接的服务器,只有当两者匹配,连接才算建立成功(服务器响应101状态码表示连接成功),最后借助于 TCP 传输信道进行全双工通信。

四、WebScoket 与 http 的相同点

  • 都是基于 TCP 协议,都需要三次握手建立连接,都是可靠传输协议
  • 都是应用层协议

五、WebScoket 与 http 的不同点

  • WebScoket 是双向通信协议,模拟 Socket 协议,而 HTTP 是单向的
  • WebScoket 需要浏览器(客户端)和服务器握手进行连接,而 HTTP 是浏览器向服务器发起的连接,服务器预先并不知道这个连接

六、WebScoket 的应用场景

如果我们需要通过网络传输的任何实时更新或连续数据流,如监视、通知、聊天等,就可以使用 WebScoket,如果我们获取旧数据,或者只想获取一次数据则应该使用 HTTP 协议。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值