Socket.IO简介
1.概述
Socket.IO是一个完全由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通信、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js.
2.支持
Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(Polling)机制以及其它实时通信方式,并封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。
- WebSocket: 是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯。
- 多种Polling机制(轮询):
- Adobe Falsh Socket
- AJAX长轮询
- AJAX multipart streaming
- 持久Iframe
- JSON 轮询
Socket.IO会根据浏览器对通讯机制的支持情况,字典选择最佳方式实现网络实时通信.
3. 跨平台
Socket.IO是为了构建不同浏览器和移动设备上实时应用.
具有众多强大功能的模块和扩展API: 如(session.socket.io)(http session中间件,进行session相关操作)、socket.io-cookie(cookie解析中间件)、session-web-sockets(以安全的方式传递Session)、socket-logger(JSON格式的记录日志工具)、websocket.MQ(可靠的消息队列)、socket.io-mongo(使用MongoDB的适配器)、socket.io-redis(Redis的适配器)、socket.io-parser(服务端和客户端通讯的默认协议实现模块)等。
4. 原理.
Socket.IO实现了实时、双向、基于事件的通讯机制,它解决了实时的通信问题,并统一了服务端与客户端的编程方式。
启动了Socket以后,就像建立了一条客户端与服务端的管道,两边可以互通有无。它还能够和Express.js提供的传统请求方式很好的结合,即可以在同一个域名,同一个端口提供两种连接方式.