美文网首页
WebSocket和socket.io的区别

WebSocket和socket.io的区别

作者: Light_shallow | 来源:发表于2019-04-09 14:05 被阅读0次

什么是WebSocket?

1、在HTML5出现

2、独立于http的实时通信协议,全双工

浏览器和服务器之间提供了一个基于TCP连接的双向通道。

在WebSocket出现之前,服务端想要向客户端推送数据只能通过客户端向服务端主动发送请求才能获得。

构建实时的web应用时,主要采用轮询和Comet技术。其中Comet技术又分成两种,长轮询机制和流技术。

轮询:一定的时间间隔向服务端发请求,以频繁的请求方式来保持客户端和服务端的同步。

长轮询:如果当前请求没有数据返回,则继续保持当前请求的网络连接状态,直到服务端有数据返回或连接超时。

        减少了客户端和服务端交互的次数。

流:客户端的页面向服务端发出一个长连接的请求。服务器接收这个请求后作出回应并不断更新连接状态从而保证

    客户端和服务器的连接不过期。这种就可以保持将服务端的信息持续不断地发向客户端。

这些实质上都是用ajax的方法模拟实时效果的,没有实现真正的实时技术。

WebSocket是独立的基于TCP的协议,和http的关系只停留在WebSocket的握手被http服务器当作

Upgrade request http包处理。

协议关键:

Response Headers

Upgrade: websocket

Request Headers

Upgrade: websocket

一旦建立了连接,服务端与客户端之间就可以以全双工方式进行通信。

什么是Scoket.io?

它是由js实现,基于node.js,支持WebSocket协议用于实时通信,跨平台的开源框架

Socket.io将Websocket和轮询机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时通信机制。

Socket.io中主要使用了websocket,将轮询作为其辅助选项,提供的是相同的接口。和node.js一样,也是事件驱动的。

不是所有的浏览器都支持websocket,通过socket.io的封装,你不用关心里面用了什么连接方式。在任何浏览器里都可以使用socket.io来建立异步的连接。

socket.io包含了服务端和客户端的库,如果在浏览器中使用了socket.io的js,服务端也必须同样适用。

参考链接:

https://www.cnblogs.com/mazg/p/5467960.html

相关文章

网友评论

      本文标题:WebSocket和socket.io的区别

      本文链接:https://www.haomeiwen.com/subject/llqbiqtx.html