WebSocket是什么原理?为什么可以实现持久连接?

很高兴能够看到和回答这个问题!

WebSocket是什么原理?

WebSocket通过常见的HTTP协议进行数据连接,一般走的是TCP通道,WebSocket是一个允许单TCP连接之间全双工通信的协议。在WebSocket API中,浏览器和服务器只需要一次远程连接,而不是三次远程连接连接到TCP服务器,这样就可以直接持久连接和双向数据传输。

WebSocket的特点

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

  • 缺陷:HTTP的通信只能由客户端发起建立在TCP协议之上WebSocket特点性能开销小通信高效
  • 客户端可以与任意服务器通信
  • 协议标识符ws wss持久化网络通信协议

通常情况下,浏览器向服务器发送一个请求,工作完成后再向客户端返回一个消息。如果需要主动向浏览器提供数据,可以使用Web套接字。在向对方发送消息之前,先在服务器上维护一个Web套接字连接,然后在前端维护一个,再维护Web套接字。

Websocket使用ws或wss协议,对应http或https。在WebSocket远程连接成功后,这是一个全双工的TCP通道,在这个通道上可以无差别的从工作日结束后向客户端发送数据。WebSocket创建的绑定与长HTTP绑定不同。由于长期的地下室还是HTP协议,他还是提出了一个问题,但只是长期保持联系。

为什么可以实现持久连接?

WebSocket协议是由HTML5标准定义的,它最初是为浏览器设计的,避免了相似性的限制。因为浏览器可以和任何工作端进行通信,现代的浏览器大多支持WebSocket。虽然WebSocket最初定义为HTML5,但它同样适用于移动终端。虽然可以通过Socket直接与终端连接,但使用WebSocket可以有效防止一些防火墙的窃听。

WebSocket建立了一个连接,我们称之为持久连接,每个连接都是服务器的一个资源。但是,如果服务器长时间没有消息通信,就会倾向于关闭连接。其实,WebSocket的任务就是及时向桌面端发送空白消息,保证连接不会自动断开。很多网站采用技术实现推送技术。当浏览器向服务器发送HTTTP请求时,在一定的时间间隔内(如1秒)进行轮询,然后服务器将最新的数据返回给客户端的浏览器。这种传统的模式有明显的缺点,那就是浏览器需要不断地访问服务器,但HTTTP请求中会包含一个较长的头,在这个头中,真正有效的数据只能占据一小部分,这似乎造成了很多资源(如带宽)的浪费。

第一次连接到Web套接字时,使用普通的HTTP与服务器通信,与Web套接字交换消息。一旦建立了Web套接字连接,所有的消息都可以通过这个通道发送。同时,客户端和服务器会继续使用乒乓球保持心跳,防止非正常断线。将网站的刷新逻辑移植到支持的浏览器上很容易,只需要找一些webssocket接口使用双webssocket属性即可。因为协议是完全双向的,服务器可以随时主动向客户端发送数据。与HTTP请求相比,接收客户请求的响应所需的延迟要少得多。即使与彗星等长时间的轮询相比,也可以在短时间内更频繁地传输数据。

答案写到这里,我想您应该明白了WebSocket的原理,也知道了WebSocket可以实现持久连接的原因。WebSocket是基于web的一项新技术,它克服了以往HTTP协议下访问速度较慢容易断开连接,网站假死的现象。未来WebSocket技术将全面普及,提高我们的上网体验!

以上便是我的一些见解和回答,可能不能如您所愿,但我真心希望能够对您有所帮助!不清楚的地方您还可以关注我的头条号“每日精彩科技”我将竭尽所知帮助您!

码字不易,感觉写的还行的话,还请点个赞哦!

(0)

相关推荐