首页 > 代码库 > Faye,Simple pub/sub messaging for the web

Faye,Simple pub/sub messaging for the web

参考资料

http://faye.jcoglan.com/

  

  

Faye is a publish-subscribe messaging system based on theBayeux protocol/CometD. It provides message servers forNode.js and Ruby, and clients for use on the server and in all major web browsers.

  

  

系统架构

  

  

组件

功能

Storage

存储内容

  • 活跃client的id
  • 订阅信息
  • queued message to be delivered to clients

存储方式

  • memory engine
  • redis engine

Engine

Storage的抽象层,实现了Faye的所有服务

  • client registering
  • storing subscriptions
  • routing messages

Server

实现了Bayeus 协议,操作集

  • handshake
  • connect
  • disconnect
  • subscribe
  • unsubscribe
  • publish

Server无HTTP或其他任何网络传输技术有关

Server-side extendsions

扩展层,可以拦截incoming/outgoing message

Adapter

通过HTTP提供Server的服务,负责以JSON方式序列化和反序列化message;

连接处理

  • 基于WebSocket的持久连接
  • 基于HTTP POST的long polling
  • CORS(Cross Origin Resource sharing)
  • JSONP

两个实现:NodeAdapter, RackAdapter

Transport

客户端的network transport,负责通信和JSON的序列化和反序列化以及网络故障的检测和恢复

  • Websocket实时性强
  • long polling / JSONP只能依赖超时

client-side extensions

类似于Server-side extendsions

client

提供subscribe/unsubscribe, send/receive message的接口,实现了Bayeux protocol,用户不需要处理handshake 和 connect等底层操作

  

  

Cluster支持

这种结构中的Storage采用Redis。Server是无状态,方便水平扩展,简化路由(使用随机/rr策略即可)。

  

  

使用简单

  

使用类似socket.io

  

Faye,Simple pub/sub messaging for the web