WebSocket学习

简单介绍

本人也是听说过, 没用过, 想了解一下,websocket到底是什么, 能做什么. 写出来学习的过程和测试通过的代码, 分享给有同样疑惑的你们!

在了解Websocket之前, 先了一下为什么已经有了HTTP协议, 为什么还要另外一个协议?

HTTP协议

首先我们需要知道什么是HTTP协议 Hyper Text Transfer Protocol(超文本传输协议): 主要是用于从万维网(WWW) 服务器传输超文本到本地浏览器, 从而用户可以通过浏览器看到响应的内容。HTTP也是基于TCP/IP来进行传输数据的通信协议 。它主要是用于应用层的面向对象协议。下图为网络七层协议:

HTTP协议的工作:C/S的架构,浏览器作为HTTP客户端通过URL向HTTP服务器(WEB服务器)发送所有请求。Web服务器根据收到的请求, 返回相就的信息。

HTTP协议的请求Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

请求行(request line)请求头部(header)空行请求数据四个部分组成。

HTTP协议有几个缺陷:

1. 不支持常连接;信息的获取需要通过轮徇的方式, 每隔一段时间发一次请求, 才能得到更新的消息。

2. 通信只能由客户端发起。如果你不主动发请求要查询、查看, 服务器商不主动推送消息给客户。

WebSocket

 - WebSocket是HTML5开始提供的。于2008年诞生,2011年成为国比分标准。它是一种在单个TCP连接上进行全双工通信的协议。所有浏览器都支持。目的是在服务器可以在任意时刻发消息给浏览器, 不需要等待浏览器的请求。

 - 全双工(full-duplex):允许两台设备间同时进行双向资料传输。如手机,双向车道。

 - 半双工(half-duplex): 允许两台设备之间的双向通信, 但是不能同时进行。只有一条信道, 同一时间只允许一方发,一方收, 或反之。

 

HTTP协议与WebSocket的关系

HTTP协议一直以来都是WEB相关应用的主宰, 都是围绕着请求/响应的模式而构建的。找开一个网页,如果不点f5刷新,或者点击其它按钮, 你将得不到任何更新。有的公司为了能让客户经常看到刷新, 早期会采用间隔几秒或者几分钟刷新一下页面。当AJAX逐渐被应用,它使得页面刷新的问题得到了解决。 但是,脚本仍然是运行在浏览器一端, 也就是客户端,轮循的请求也是由客户端向服务器端发起的。

AJAX 与WebSocket的区别

当我看到WebSocket的工作机制时, 脑子里第一个迸出来的问题就是AJAX的工作原理与WebSocket的区别在哪里呢.

  -  AJAX:它是Web应用程序通过频繁的异步的javaScript长时间的轮循来更新浏览器页面显示的内容.图如下:

 - WebSocket : 全双工通信, 双方都可以向对方推送消息. 不需要长轮询,如下图:

WebSocket是如何工作的?

1. 首先它分为客户端服务端.客户端只要支持了Websocket的浏览器就可以通过WebSocket对象使用它.前提是浏览器支持了Html5.

          服务端 : 现在有很多种语言都已经支持WebSocket, Node.js, Java,C++, Python等等. Java一般都依托于servlet容器.

2. 它支持全双工通信, 客户端和服务端同时支持发送和接收. 互不干扰.因为底层是基于TCP实现的, 而TCP本身就是全双工通信.所以WebSocket自带支持全双工通信.

参考资料:

HTTP简介

http://www.cnblogs.com/ranyonsue/p/5984001.html

https://www.html5rocks.com/zh/tutorials/websockets/basics/

本文将以一个简单的示例来演示Websocket是如何工作的, 以及它的作用.

https://www.youtube.com/watch?v=ws3ng0egyqU&t=995s

http://www.runoob.com/html/html5-websocket.html

https://halfrost.com/websocket/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值