Socket.IO 官方简介

Socket.IO enables real-time bidirectional event-based communication.
It works on every platform, browser or device, focusing equally on reliability and speed.
(socket.io 能够实现实时双向的基于事件的通信。它对每一个平台,浏览器或设备,同样注重可靠性和速度。 )

测试环境

  • windows10 TH2
  • Node.js v5.4.1
  • npm v3.3.12

获取 Socket.IO

获取服务器端 Socket.IO

  1. 首先在命令行通过 cd 命令跳转到项目文件夹内(文件夹内存在 node_modules 文件夹)
  2. 通过下面 npm 命令下载 Socket.IO 到本地(–save 参数可以把该模块信息添加进 package.json 文件中)

获取客户端 Socket.IO

How to use

Node.js 端部分代码参考

服务器端API参考

客户端部分代码参考

客户端API参考

Socket.IO 原理

以往实现即时通信的手段

(优缺点比较可参考–高明的博客)

  • 轮询:客户端定时向服务器发送 Ajax 请求,服务器接到请求后马上返回响应信息并关闭连接。
  • 长轮询:客户端向服务器发送 Ajax 请求,服务器接到请求后 hold 住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
  • 长连接:在页面里嵌入一个隐蔵 iframe,将这个隐蔵 iframe 的 src 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。
  • Flash Socket:在页面中内嵌入一个使用了 Socket 类的 Flash 程序 JavaScript 通过调用此 Flash 程序提供的 Socket 接口与服务器端的 Socket 接口进行通信,JavaScript 在收到服务器端传送的信息后控制页面的显示。

HTML5 下的 WebSocket 协议

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 通讯协议于2011年被 IETF 定为标准 RFC 6455,WebSocketAPI 被 W3C 定为标准。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
(引自–WebSocket 维基百科

Socket.IO 即时通讯方式

Socket.IO 除了支持 WebSocket 通讯协议外,还支持许多种轮询(Polling)机制以及其它实时通信方式,并封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。
Socket.IO 实现的 Polling 通信机制包括 Adobe Flash Socket、AJAX 长轮询、AJAX multipart streaming、持久 Iframe、JSONP 轮询等。
Socket.IO 能够根据浏览器对通讯机制的支持情况自动地选择最佳的方式来实现网络实时应用。
(引自–李小兵

总的来说,Socket.IO 封装了 WebSocket 等各种即时通讯方式,并向上提供与原方式一样的接口,能根据实际情况进行即时通讯方式的选择的一个库。

发表评论

电子邮件地址不会被公开。 必填项已用*标注