这篇文章将为大家详细讲解有关Socket Socket.io Websocket HTTP之间的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Socket 是操作系统提供的对于传输层(TCP / UDP)抽象的接口,是一个编程概念,而 Websocket 、Socket.io 与 HTTP 一样是一个成文的互联网协议。另外,Websocket 和 HTTP 都是基于 TCP 传输数据,Socket.io 可以看作是对 Websocket 和 HTTP 的又一次封装。
HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。
无状态:每次连接只处理一个请求,请求结束后断开连接。
无连接:对于事务处理没有记忆能力,服务器不知道客户端是什么状态。
以往实现即时通讯的手段:
轮询:客户端定时向服务器发送 Ajax 请求,服务器接到请求后马上返回响应信息并关闭连接。
长轮询:客户端向服务器发送 Ajax 请求,服务器接到请求后 hold 住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
长连接:在页面里嵌入一个隐蔵 iframe,将这个隐蔵 iframe 的 src 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。
Flash Socket:在页面中内嵌入一个使用了 Socket 类的 Flash 程序 JavaScript 通过调用此 Flash 程序提供的 Socket 接口与服务器端的 Socket 接口进行通信,JavaScript 在收到服务器端传送的信息后控制页面的显示。
Websocket 的出现就是为了解决 HTTP 在即时通信中存在的不足,HTTP 是通过 Polling 实现即时通信存在很大的资源开销。
Webscoket 握手阶段采用 HTTP 协议,连接建立之后便与 HTTP 协议没有任何关系,Websocket 连接建立之后,client 与 server 可以同时收发数据,全双工通讯。
Socket.io 支持 Websocket 协议,支持多种轮询机制,它实现了实时、双向、基于事件的通讯机制,天生用来解决实时通讯问题。另外,Socket.io 能够根据浏览器对通讯机制的支持情况自动地选择最佳的方式来实现网络实时应用。
关于“Socket Socket.io Websocket HTTP之间的区别有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。