websocket协议

Socket   

socket又称为套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。实现应用程序间网络通信。

socket可以使用TCP/IP协议或UDP协议。

TCP/IP协议:是目前应用最广泛的协议,是构成Internet国际互联网协议的最为基础的协议,由TCP和IP协议组成。

TCP协议:面向连接、可靠、基于字节流的传输层通信协议,负责数据的可靠传输。

IP协议:用于报文交换网络的一种面向数据的协议,主要负责给每台网络设备一个网络地址,保证数据传输到正确目的地。

UDP协议:无连接、不可靠、基于报文的传输层协议,发送后不用管,比TCP速度快。

 

HTTP协议特点

1.无状态协议

2.用于通过internet发送请求消息和响应消息。

3.使用端口接收和发送消息,默认端口为80

4.底层通信使用socket完成。

 

解决http协议实现客户端和服务器端的消息推送的办法:

1.轮询

客户端定时向服务器发送ajax请求,服务器接到请求后马上返回响应消息并关闭连接。

优点:后端程序编写比较容易。缺点:请求中有大半是无用的,浪费带宽和服务器资源。

适用于小型应用

2.长轮询

客户端向服务器发送ajax请求,服务器收到请求后一直保持连接状态,直到有新消息才会返回响应消息并关闭了连接,客户端处理完响应消息后再向服务器发送信新的请求。

优点:在没有新的消息的情况下不会频繁发送请求,耗费小。缺点:服务器保持连接会浪费资源,返回数据顺序无保证,难于关闭里维护。

3.长连接

在页面嵌入隐藏的iframe,将这个隐藏的iframe的src属性设置为对一个长连接的请求或采用xhr请求,服务器端就能实现不断向客户端发送数据。

优点:消息及时送达,不发无用请求,管理起来相对方便。缺点:服务器维护一个长连接增加开销。

4.flash socket

在页面嵌入使用了socket类的flash程序,js通过调用此flash程序提供的socket接口实现与服务器端的socket接口进行通信,js在收到服务器端传送的信息后控制页面的显示。

优点:实现真正的及时通信。缺点:客户端必须安装flash插件,非http协议,无法自动穿过防火墙

5.websocket

是H5提供的一种浏览器与服务器间进行全双工通讯的网络技术,可以实现客户端和服务器端的长连接,双向实时通信。

特点:异步,事件驱动,使用ws或者wss协议的客户端socket,实现消息推送

 

概念

是基于tcp的一种新的网络协议。实现了浏览器与服务器全双工通信:不进支持客户端发起请求,还支持服务器端向客户端推送消息。

为什么需要websocket协议?

http协议的缺陷:只能由客户端发起,做不到服务器主动向客户端推送消息

在sebsocket协议之前,双工通信是通过客户端不停(轮询)发送http请求,从服务器拉取更新来实现,导致效率低下,而且有的时候服务器端根本没有更新,客户端发起的请求是没用的。

客户端不停的轮询导致的问题:

1.服务器被迫给每个客户端使用很多不同的底层TCP连接:一个用来向客户端发送消息,其他用来接收每个传入的消息。

2.有些协议有很高的开销,每一个客户端和服务器之间都有http头。

3.客户端脚本被迫维护从传出连接到传入连接的映射来追踪回复。

解决方案,使用websocket提供的单个tcp连接双向通信。

实现原理

在实现websocket连线过程中,需要通过将浏览器发出websocket连线请求,然后服务器发出回应,这个过程称为“握手”。

在websocket API,浏览器和服务器只需要做一个握手动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就可以实现数据互相传送。

在websocket协议中,为实现及时服务带来的好处:

1.Header:相互沟通的Header很小

2.Server Push:服务器的推送,服务器不再被动的接收到浏览器的请求之后返回数据,而是在有数据更新的时候主动推送给浏览器。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值