通俗易懂的websocket原理

作者: Viaphlyn | 来源:发表于2017-10-14 19:25 被阅读45次

一、是什么

WebSocket 是一种网络通信协议,它规范定义了一种 API,可在网络浏览器和服务器之间建立“套接字”连接。简单地说:客户端和服务器之间存在持久的连接,而且双方都可以随时开始发送数据。

二、Websocket和ajax轮询,长轮询对比

  • 1.ajax轮询:让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。
    • 优点:后端程序编写比较容易。
    • 缺点:请求中有大半是无用,轮询的效率低,浪费带宽和服务器资源(必须不停连接,或者 HTTP 连接始终打开),被动性, 需要服务器有很快的处理速度和资源。(速度)
    • 实例:适于小型应用。

客户端:啦啦啦,有没有新信息(Request)
服务端:没有(Response)
客户端:啦啦啦,有没有新信息(Request)
服务端:没有。。(Response)
客户端:啦啦啦,有没有新信息(Request)
服务端:你好烦啊,没有啊。。(Response)
客户端:啦啦啦,有没有新消息(Request)
服务端:好啦好啦,有啦给你。(Response)
客户端:啦啦啦,有没有新消息(Request)
服务端:。。。。。没。。。。没。。。没有(Response) ---- loop

  • 2.long poll:采取的是阻塞模型(一直打电话,没收到就不挂)
    客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
    • 优点:在无消息的情况下不会频繁的请求,耗费资源小。
    • 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。需要有很高的并发,也就是说同时接待客户的能力。(场地大小)
    • 实例:WebQQ、Hi网页版、Facebook IM。

场景再现客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request)
服务端:额。。 等待到有消息的时候。。来 给你(Response)
客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request) -loop

  • ajax轮询和long pull都可能出现以下情况:

客户端:啦啦啦啦,有新信息么?
服务端:月线正忙,请稍后再试(503 Server Unavailable)
客户端:。。。。好吧,啦啦啦,有新信息么?
服务端:月线正忙,请稍后再试(503 Server Unavailable)

  • HTTP还是一个无状态协议
    通俗的说就是,服务器因为每天要接待太多客户了,是个健忘鬼,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。
  • 3.websocket:服务端就可以主动推送信息给客户端啦。
    • 优点: 只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。(即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你),也避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求

客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)
服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)
客户端:麻烦你有信息的时候推送给我噢
服务端:ok,有的时候会告诉你的
服务端:balabalabalabala
服务端:哈哈哈哈哈啊哈哈哈哈
服务端:笑死我了哈哈哈哈哈哈哈

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 17

相关文章

  • 通俗易懂的websocket原理

    一、是什么 WebSocket 是一种网络通信协议,它规范定义了一种 API,可在网络浏览器和服务器之间建立“套接...

  • websocket + node.js

    websocket的原理和应用 在继续本文之前,让我们了解下websocket的原理: websocket通信协议...

  • WebSocked 基本用法

    WebSocket 原理 创建 WebSocket 对象。 Socket.readyState属性 WebSock...

  • 从零开始学SpringBoot之SpringBoot WebSo

    前言: 这节我们介绍下WebSocket的原理。 一、websocket与http WebSocket是HTML5...

  • websocket及server环境配置

    看完让你彻底搞懂Websocket原理 WebSocket 教程 WebSocket 是 HTML5 开始提供的一...

  • WebSocket与Socket

    点击查看原文,走你)))))))))))))))))))) WebSocket介绍与原理 WebSocket pr...

  • WebSocket 原理

    今天来讲一下WebSocket的原理,能让你更深入的去了解WebSocket,深知其原理,才能更好的去使用它。 ...

  • WebSocket SSL 加密浅析

    1 WebSocket 原理 1.1 背景 WebSocket 是基于Http 协议的改进,Http 为无状态协议...

  • WebSocket的实现原理

    WebSocket的实现原理 一、什么是websocket Websocket是应用层第七层上的一个应用层协议,它...

  • WebSocket协议

    参考 WebSocket协议分析及实现 WebSocket 是什么原理?为什么可以实现持久连接? RFC6455 ...

网友评论

    本文标题:通俗易懂的websocket原理

    本文链接:https://www.haomeiwen.com/subject/nmktuxtx.html