Socket Socket.io Websocket HTTP 之间的区别
Posted AndroidGeeks
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket Socket.io Websocket HTTP 之间的区别相关的知识,希望对你有一定的参考价值。
阅读本文大概需要 5.66 分钟。
教育的目的从来都是精神的独立而不是给予苦头,除非有人不希望看到你太“自在”,需要通过制度展示权力的威严。
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 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
/socket.io/socket.io.js 中不提供 Socket.io
socket.io - socket.emit、socket.on、socket.send
Express.js 'socket.io/socket.io.js 404'