Websocket 库
现在大部分新版浏览器、Android、IOS 都已经支持了 Websocket,直接使用 Websocket 问题不大,那么 Websocket 库的作用是什么呢?
Websocket库提供了不少辅助功能,使开发更简单,例如 心跳检测机制、重连、不支持Websocket情况下的后退方案
engine.io
跨浏览器、跨设备的双向通信层实现,小巧,非常稳定,具有高可用性,而且对负载均衡器友好,易扩展
https://github.com/socketio/engine.io
WS
一个 node.js websocket 库,据说是 node.js 中最快的
https://github.com/websockets/ws
SockJS
一个JS库,提供了清晰的跨浏览器JS API,可以在服务器与客户端间建立低延时、全双工、跨域的通讯
支持丰富的后退机制,例如 websocket 不可用时,会自动后退为 flash 或者 http轮询方式
https://github.com/sockjs/sockjs-client
Primus
不是一个具体实现,而是一个实时框架的外壳
node.js 中有很多实时框架,各有特色,Primus便提供了一个通用接口,方便更换不同框架
https://github.com/primus/primus
Tornado
Python 的实时库,提供了较好的后退机制
http://www.tornadoweb.org/
web-socket-js
基于 flash 的 websocket 实现
https://github.com/gimite/web-socket-js
libwebsocket
C语言的 websocket 实现,以最少的 CPU 和内存资源,实现尽可能快的全双工通讯
https://libwebsockets.org/
Atmosphere
是一个工作于 JVM 的异步 WebSocket/Comet 框架,支持 WebSockets, Server Sent Events (SSE), Long-Polling, HTTP Streaming (Forever frame), JSONP
并且支持非常多的扩展,例如 Redis, Hazelcast, JMS, JGroups
https://github.com/Atmosphere/atmosphere
Java Web Socket
纯 Java 实现的 WebSocket 客户端和服务器
http://java-websocket.org/
发布订阅库
在实时消息中,‘发布订阅’是一个被广泛采用的模式,多个客户端可以订阅一个主题,其他客户端可以向这个主题推送消息,是一个简单而且扩展性极好的多对多沟通模式
socket.io
可以工作于任何平台、浏览器、设备上,速度快、可靠性好
后端使用以了一个 Redis server,可以支持分布式多节点负载
http://socket.io/
socket cluster
Node.js 的实时 WebSocket 框架,具有高度可扩展性,在集群环境中可以很好的处理连接的负载均衡
http://socketcluster.io/
Data-Sync
发布订阅是实时应用最开始就使用的模式,工作过程类似这样:
用户A修改了某些数据,通过ajax提交sever保存到数据库,产生一个事件,其他客户端接收到此事件,发起一个ajax请求,获取新的数据
后来出现了一个更好的处理方式:data-sync
data-sync 可以使任何更改的数据马上同步到所有连接的客户端,减少请求,使应用更快,开发更简便
Horizon
RethinkDB 团队基于 RethinkDB server 开发的,包括 Node.js server 和 JavaScript 客户端,开发简单,运行极快
https://horizon.io/
FeatherJS
是一个 RESTful CRUD 框架,基于 Node 的 express.js,底层使用了 socket.io,当有对象变动后,就会发送事件,主打特点是简单、快速
http://feathersjs.com/