首页 > 编程知识 正文

websocket http,websocket api

时间:2023-05-03 11:20:27 阅读:286015 作者:1414

Http是我们都熟悉的,它是一种协议,基于TCP之上,用于网络通信的应用层上的协议。同时它也是一种短连接(非持久化的),单向的(服务端无法主动给客户端发送数据)网络协议。

一、为什么需要WebSocket协议

Http在即时通信上有缺点很明显,因为它是单向的,如果要实现即时通信,需要利用“轮询”(每隔一定时间,如1秒,就由客户端发送一个Request请求用于获取新数据,从而更新状态),这样的话会导致资源浪费,因为Http的Header都比较长,为了更新数据状态,发送一个空请求,都是需要占用很多带宽的。

因此,就有了WebSocket协议的出现了,它是HTML5中新增的协议,是HTML5标准的其中一部分。

WebSocket协议的出现使得浏览器提供对Socket的支持成为可能,从而在浏览器和服务器之间提供了一个基于TCP连接的双向通道。

二、WebSokcet和Http的区别在哪

WebSocket和Http的异同点主要有下面几点:
相同点:
1、都是基于TCP协议的,都是可靠性的传输协议。
2、都是应用层上的协议。
不同点:
1、WebSocket是一种双向通信协议(Http是单向的),模拟Socket协议,在建立连接后,WebSocket可以使服务器与客户端(Browser/Client)两者都能主动向对方发送和接收数据,就是Socket一样。
2、WebSocket需要类似TCP的握手方式才能建立起连接,连接成功后才能正常相互通信。(其实,Http请求的最开头,也是需要三次握手的,因为它是基于TCP的)
3、WebSocket建立连接后,是类似Socket(TCP)的长连接,服务端与客户端可以随时通信。(Http是请求-应答模式的短连接,一次通信后连接就会断开)

三、WebSocket和Socket的关系

那么这个WebSocket协议和我们以前知道的Socket又有什么关系呢?
上面有说过,WebSocket协议是模拟的Socket。
其实,Socket并不是一种协议,它只是传输层(网络七层协议中的第四层,包括TCP协议和UDP协议)的一个封装,所以严格来说,Socketk只是接口,方便我们使用TCP、UDP协议的。
所以,WebSocket与Socket的主要区别在于,Socket是传输层协议的封装接口,而WebSocket是应用层协议。
另外,WebSocket是连接(握手连接),需要依赖Http协议。

四、WebSocket和Http交互的区别

1、传统 HTTP 请求响应客户端服务器交互图

2、WebSocket 请求响应客户端服务器交互图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。