WebSocket是什么原理?

作者&投稿:舌彼 (若有异议请与网页底部的电邮联系)
websocket 是什么原理?为什么可以实现持久连接~

WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chrome12就已经开始支持,随着协议草案的不断变化,各个浏览器对协议的实现也在不停的更新。该协议还是草案,没有成为标准,不过成为标准应该只是时间问题了,从WebSocket草案的提出到现在已经有十几个版本了,目前最新的是版本17,所对应的协议版本号为13,目前对该协议支持最完善的浏览器应该是chrome,毕竟WebSocket协议草案也是Google发布的。
1. WebSocket API简介
首先看一段简单的javascript代码,该代码调用了WebSockets的API。

[javascript] view plaincopy

var ws = new WebSocket(“ws://echo.websocket.org”);

ws.onopen = function(){ws.send(“Test!”); };

ws.onmessage = function(evt){console.log(evt.data);ws.close();};

ws.onclose = function(evt){console.log(“WebSocketClosed!”);};

ws.onerror = function(evt){console.log(“WebSocketError!”);};

这份代码总共只有5行,现在简单概述一下这5行代码的意义。
第一行代码是在申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。
第二行到第五行为WebSocket对象注册消息的处理函数,WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror,当Browser和WebSocketServer连接成功后,会触发onopen消息;如果连接失败,发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;当Browser接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;当Browser接收到WebSocketServer端发送的关闭连接请求时,就会触发onclose消息。我们可以看出所有的操作都是采用消息的方式触发的,这样就不会阻塞UI,使得UI有更快的响应时间,得到更好的用户体验。

可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP
本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP
连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling
是指从客户端(一般就是浏览器)不断主动的向服务器发 HTTP
请求查询是否有新数据。这两种模式有一个共同的缺点,就是除了真正的数据部分外,服务器和客户端还要大量交换 HTTP
header,信息交换效率很低。它们建立的“长连接”都是伪.长连接,只不过好处是不需要对现有的 HTTP server
和浏览器架构做修改就能实现。
WebSocket 解决的第一个问题是,通过第一个 HTTP request 建立了 TCP 连接之后,之后的交换数据都不需要再发
HTTP request了,使得这个长连接变成了一个真.长连接。但是不需要发送 HTTP header就能交换数据显然和原有的 HTTP
协议是有区别的,所以它需要对服务器和客户端都进行升级才能实现。在此基础上 WebSocket 还是一个双通道的连接,在同一个 TCP
连接上既可以发也可以收信息。此外还有 multiplexing 功能,几个不同的 URI 可以复用同一个 WebSocket
连接。这些都是原来的 HTTP 不能做到的。

WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chrome12就已经开始支持,随着协议草案的不断变化,各个浏览器对协议的实现也在不停的更新。该协议还是草案,没有成为标准,不过成为标准应该只是时间问题了,从WebSocket草案的提出到现在已经有十几个版本了,目前最新的是版本17,所对应的协议版本号为13,目前对该协议支持最完善的浏览器应该是chrome,毕竟WebSocket协议草案也是Google发布的。第二行到第五行为WebSocket对象注册消息的处理函数,WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror,当Browser和WebSocketServer连接成功后,会触发onopen消息;如果连接失败,发送、接收数据失败或者处理数据出现错误。




WebSocket浏览器
WebSocket是一种在客户端和服务器之间建立持久连接的通信技术,它允许双向数据传输,常用于实时应用程序,如在线聊天和游戏。下面是一些主流浏览器对WebSocket支持的情况:Google Chrome: 从版本4开始,Chrome就全面支持WebSocket,这意味着使用Chrome的用户可以轻松地在网页上实现双向通信,无需刷新页面。Firefox:...

websocket 和 socket.io 之间的区别是什么
一、性质不同 1.Websocket:Websocket是一种支持客户端和服务器之间双向实时通信的技术。2.套接字。IO:套接字。IO是将WebSocket、AJAX等通信方式封装成统一的通信接口。二、兼容性是不同的 1.websocket:在使用websocket时,虽然主流浏览器已经被支持,但是可能存在不兼容性。2,套接字。io:使用插座的时候...

websocket、tcp实现即时通信的区别?
WebSocket与TCP作为实现即时通信的技术,它们在设计与应用上有所差异。WebSocket基于HTTP协议,提供全双工通信,建立长连接,允许客户端与服务器间进行双向实时数据交换。借助标准的Web套接字API,WebSocket在浏览器与服务器间传输数据,适用于频繁交换大量数据且要求实时响应的场景,如在线游戏、实时聊天、视频...

websocket是什么
—— 英文:websocket是一种在单个TCP连接上进行全双工通信的协议。【解释】websocket使得客户端和服务器之间的数据交换变得简单,在websocket API中,浏览器和服务器只需一次握手,两者之间就直接可以创建持久行的连接,并进行双向数据传输。

WebSocket 是什么原理?为什么可以实现持久连接?
WebSocket:实现持久连接的革命性协议在HTML5的革新中,WebSocket悄然出现,它并未改变HTTP的根基,而是以一种革命性的方法为实时通信提供了持久的连接。WebSocket,作为HTTP协议的延伸,通过握手阶段的微妙调整,实现了服务器与客户端之间更为高效的数据交换。WebSocket的一大亮点在于它的持久化特性,它与HTTP的...

socket和websocket?
Socket是传输控制层协议,WebSocket是应用层协议。Socket是应用层与TCP\/IP协议族通信的中间软件抽象层,它是一组接口(不是协议,为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口)。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP\/IP协议族隐藏在Socket接口后面...

如何理解 TCP\/IP, SPDY, WebSocket 三者之间的关系?
揭示TCP\/IP、SPDY与WebSocket之间的深层联系:性能提升与应用拓展 在复杂的网络通信架构中,TCP\/IP、SPDY和WebSocket作为网络协议的三个重要支柱,它们各自承担着特定的角色,同时又相互交织,共同塑造了现代Web的高效运行。TCP\/IP作为基础,HTTP则在应用层上处理数据传输,而SPDY和WebSocket则在性能优化和实时...

关于WebSocket前端必知必会的知识点
WebSocket是一种革新性的网络传输协议,它在应用层的OSI模型中运作,通过单个TCP连接实现双向的全双工通信,简化了客户端(浏览器)与服务器间的实时数据交换。相较于之前的通信方式,WebSocket在节省服务器资源和带宽、提升通信实时性方面具有显著优势。WebSocket的连接过程涉及协议升级,通过"Connection: ...

WebSocket 和 Socket 的区别
所以对于开发者来说也往往是在说一种编程概念。同时,操作系统中进程间通信也有Socket的概念,但这个Socket就不是基于网络传输层的协议了。WebSocket 上边简单叙述了Socket的意义,由于年代久远,很多事情也搞不了那么清楚。但WebSocket是一个很晚近的东西,可以让看到它是如何成为现在看到的这个样子的。

看完让你彻底搞懂Websocket原理
WebSocket是一种在HTML5中引入的网络应用层协议,它并非基于HTTP协议的升级,而是HTTP协议的一种补充,用于实现浏览器与服务器之间的持久连接。尽管HTTP协议支持keep-alive来维持连接,但HTTP本身并不支持长连接的主动推送,而WebSocket提供了这样的功能。WebSocket的握手过程涉及到额外的头部字段,如Sec-...

义县17782246158: WebSocket 是什么原理?为什么可以实现持久连接 -
鄞径安苏: WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信 现很多网站为了实现即时通讯,所用的技术都是轮询.轮询是在特定的的时间间隔,由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服...

义县17782246158: HTML5的WebSocket是什么原理 -
鄞径安苏: 与http不一样的地方: 发起请求带参:Upgrade: websocket Connection: Upgrade在发起websocket协议的时候通过这两个参数告诉apache,nginx,发起的是websocket请求 发起请求带参数:Sec-WebSocket-Key: 验证websocket Sec-...

义县17782246158: WebSocket究竟是什么东西 -
鄞径安苏: WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).

义县17782246158: websocket 和 socket.io 之间的区别是什么 -
鄞径安苏: websocket和socket.io之间的区别为:性质不同、兼容不同、用途不同.一、性质不同1、websocket:websocket是一种让客户端和服务器之间能进行双向实时通信的技术.2、socket.io:socket.io是将WebSocket、AJAX和其它的通信方式全部封装...

义县17782246158: websockets是什么意思 -
鄞径安苏: WebSocket WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).一开始的握手需要借助HTTP请求完成.

义县17782246158: WebSocket 和socket 的区别 -
鄞径安苏: Socket可以有很多意思,和IT较相关的本意大致是指在端到端的一个连接中,这两个端叫做Socket.对于IT从业者来说,它往往指的是TCP/IP网络环境中的两个连接端,大多数的API提供者(如操作系统,JDK)往往会提供基于这种概念的接口,所以对于开发者来说也往往是在说一种编程概念.同时,操作系统中进程间通信也有Socket的概念,但这个Socket就不是基于网络传输层的协议了.WebSocket 上边简单叙述了Socket的意义,由于年代久远,很多事情也搞不了那么清楚.但WebSocket是一个很晚近的东西,可以让我们看到它是如何成为现在我们看到的这个样子的.

义县17782246158: HTML5的webSocket怎么理解 -
鄞径安苏: 就是一组已经完成的协议,调用new WebSocket(url)与服务器握手,WebSocket.send()发送信息,onmessage事件处理得到的消息,很简单的 附:服务器端就不好做了,可以参考一下Torando(一个python语言的服务器,支持websocket)

义县17782246158: AngularJS中文社区 有人能介绍一下angular中websocket吗 -
鄞径安苏: WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chrome12就已经开始支持,随着协议草案的不断变化,各个浏览器对协议的实现...

义县17782246158: HTTP 和 WebSocket的区别 -
鄞径安苏: 按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议.在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议.WebSocket则提供使用一个TCP连接进行双向通讯的机制,包括...

义县17782246158: 请问websocket该如何建立与连接 -
鄞径安苏: 在连接之前需要知道一下几点:1、了解websocket的协议和请求规范;2、使用PHP的socket函数库来处理websocket的请求;3、处理websocket的数据帧.下面是我写的一个小例子,里面的注释我觉得也挺详细的了,对帧的处理我没有完善,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网