面试篇:WebSocket协议详解-跨域通信、安全性问题和发展前景

1、websocket概念

WebSocket是一种在客户端和服务器之间建立双向通信的协议,它可以实现实时的数据传输,避免了HTTP协议中频繁的请求和响应,从而提高了Web应用程序的性能和用户体验。

WebSocket最早是在2008年由Hixie提出的,后来被W3C纳入标准化进程,在2011年成为W3C推荐标准(RFC 6455)。在此之后,WebSocket逐渐得到了越来越多的关注和应用,在2012年至2014年间达到了高峰,成为Web开发中不可或缺的技术之一。

WebSocket的发展前景很好,因为越来越多的Web应用程序需要实时通信功能,例如在线游戏、社交网络、直播等。WebSocket已经被广泛应用于这些领域,并且被各大浏览器支持和优化,未来还将继续发展和完善,成为Web开发中不可或缺的技术之一。

2、websocket的前景,可以解决什么问题?

WebSocket可以解决传统的HTTP协议无法满足的实时通信问题,具体来说,它可以解决以下几个问题:

  1. 实时通信:WebSocket可以通过简单易用的API支持实时双向通信,使得Web应用程序可以像传统客户端应用程序一样快速响应用户的操作,例如在线聊天、多人游戏等。

  2. 高并发处理:传统的HTTP协议每次请求都需要建立一个新的连接,而WebSocket协议可以在一个TCP连接上进行多次请求和响应,减少了建立连接的时间和网络资源的消耗,从而提高了服务器的处理效率和吞吐量。

  3. 大规模消息推送:WebSocket协议可以轻松地实现大规模的消息推送,例如实时股票行情、即时新闻更新等,避免了使用轮询等方式带来的性能问题和带宽浪费。

  4. 跨平台兼容性: WebSocket技术是跨平台的,不仅支持浏览器客户端,还支持移动客户端、桌面客户端和服务端程序等多种平台,以及各种编程语言的开发。

  5. 物联网领域:WebSocket技术为物联网领域提供了一种重要的实时通信方式,可以支持设备之间的实时数据交换和控制指令传输等应用场景。

3、有哪些浏览器支持

基本上所有的主流浏览器均支持WebSocket:

  1. Chrome:支持WebSocket,从Chrome 4开始。

  2. Firefox:支持WebSocket,从Firefox 4开始。

  3. Safari:支持WebSocket,从Safari 5开始。

  4. Edge:支持WebSocket,从Edge 12开始。

  5. Opera:支持WebSocket,从Opera 11.5开始。

  6. iOS Safari:支持WebSocket,从iOS 4.2开始。

  7. Android Browser:部分支持WebSocket,从Android 2.3开始。

4、websocket与http的区别

WebSocket和HTTP是两种不同的协议,它们有以下几个主要区别:

  1. 连接方式:HTTP协议是基于请求和响应的模型,每次客户端需要获取数据时都需要发送一个新的HTTP请求,而WebSocket协议则是一种全双工的协议,在客户端和服务器之间建立一次连接后,双方可以随时发送数据。

  2. 数据格式:HTTP协议传输的数据一般采用JSON、XML等格式进行封装,而WebSocket协议则可以直接传输二进制数据。

  3. 通信效率:HTTP协议中每次数据传输都需要经过请求和响应的过程,而WebSocket协议则避免了这种重复的过程,可以实现更加高效的实时通信。

  4. 安全性:HTTP协议的安全性依赖于SSL/TLS协议,而WebSocket协议本身也支持SSL/TLS加密,可以提供更好的安全保障。

5、websocket应用

1)服务器主动给客户端发数据

一般客户端向服务器发送请求后服务器会回应响应。但服务器不会主动向客户端发送请求。响应式的方式可以解决此类问题。当然传统的方式也可以达到相同的效果比如:轮询、http长连接。

方式

实现

说明

轮询

js+ajax定时轮询

每次轮询都是一对request+response,消耗资源、不实时

http长连接

keep-alived

http每次请求均是一对request+response,keep-alived类似把多个request放在同一个连接发送,当然每个request都会有自己对应的response,实际上也是多次的请求与响应,且keep-alived本身是不可控的

comet

comet http长连接的另一种方式,类似hack的方式,但实际上还是发送一个request连接,服务器不是立即返回,等到服务器有相应的结果再返回。这个连接不能被重复使用

websocket

websocket协议

websocket类似tcp是全双工通信,在协议本身上(请求头、二进制帧)网络开销更小、速度更快、更及时。

2)websocket可以解决跨域问题

其实从图一中可以看出websocket也是存在跨域问题的,但websocket协议没有同源策略的限制。

图二中说明websocket建立连接前会先使用http请求通过后再升级协议成websocket也就是说这里的http会不会也被跨域而阻断了请求,再看第三张图,http get是不受跨域影响的,正好websocket建立连接用的就是http get。

总结:websocket可以解决跨域造成的客户端与服务器无法通信的问题。

猜你喜欢

转载自blog.csdn.net/citywu123/article/details/129879223
今日推荐