Faye,Simple pub/sub messaging for the web

参考资料

http://faye.jcoglan.com/

Faye is a publish-subscribe messaging system based on the
Bayeux protocol/CometD. It provides message servers for
Node.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

时间: 2024-11-09 02:58:37

Faye,Simple pub/sub messaging for the web的相关文章

反向Ajax,第5部分:事件驱动的Web开发

英文原文:Reverse Ajax, Part 5: Event-driven web development 前言 这一文章系列展示了如何使用反向Ajax(Reverse Ajax)技术开发事件驱动的web应用,第1部分内容介绍了反向Ajax.轮询(polling).流(streaming).Comet和长轮询(long polling):第2部分内容说明了如何使用WebSocket来实现反向Ajax,并讨论了使用Comet和WebSocket的web服务器的局限性:第3部分内容说明了如果需要

[解决办法]已经安装了数字证书,但是谷歌浏览器登录https协议的web系统时仍然提示证书不受信任

已经安装了数字证书,但是谷歌浏览器登录https协议的web系统时仍然提示证书不受信任.如下图: 解决办法: 1.单击Chrome浏览器右侧设置菜单,选择"设置". 2.拖至页面下方,单击"显示高级设置". 3.单击高级设置中的"HTTPS/SSL"处的" 管理证书". 4.弹出框单击"导入",默认下一步. 5.单击"浏览",找到web系统的数字证书. 6.默认存储方式为"将所

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

Apache配置与应用,虚拟目录;访问控制;虚拟Web主机(多域名;多端口),

1,虚拟目录 Httpd  虚拟目录 便于网站管理和维护,内容分类.例如: hhtpd://www.benet.com/news  新闻 Httpd://www.benet.com/edu   学习 以redhat6.5系统为例进行配置(系统默认自带httpd服务),首先修改httpd.conf配置文件 , (1)建立一个web站点www.benet.com vim  /etc/httpd/conf/httpd.conf 添加站点首页文档index.html (2)并搭建一个DNS服务,解析域名

对W3C标准,对表现与数据分离、Web语义化等有深刻理解

看了好多微博总结了一下概念,首先先介绍一下W3C 啥是W3C不是wc,这个建立于 1994 年的组织,其宗旨是通过促进通用协议的发展并确保其通用型,以激发 web 世界的全部潜能, 指万维网联盟(World Wide Web Consortium)一个很牛x的组织. 代码标准 w3c官网也可以借鉴w3school对W3C的理解 W3C的标准不是某一个标准,而是一系列标准的集合. 因为网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior). 所

springboot框架,文件上传问题===org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;

使用IDEA开发springboot项目,需求中要提交数据项和文件上传,同时接收实体bean对象和文件,后台Controller接收配置方式: Controller代码如下: 1 @RequestMapping(value="/comment",method = RequestMethod.POST) 2 public @ResponseBody RetResult saveIndustryComment(HttpServletRequest request,@RequestParam

[.NET Core 32]升级vs code之后,vs code无法调试net core web项目

错误提示&处理方法 参考链接:https://github.com/OmniSharp/omnisharp-vscode/issues/1742 错误:The .NET Core debugger cannot be installed. The debugger requires macOS 10.12 (Sierra) or newer 方法:You can set the option to disable auto extension updates in VS Code, and th

移除apsx视图引擎,及View文件夹下的web.config的作用

<> 使用Rezor视图引擎的时候移除apsx视图引擎 Global.asax文件 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace MvcApp { // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,

爱搜索,爱生活,基于豆瓣API &amp; Angular开发的web App(by vczero)

一.扯淡的说 name:[豆瓣搜索] 最近关注了下豆瓣的API,发现豆瓣开放平台需要加强API文档撰写啊....但是有个可喜的发现豆瓣V2接口提供了搜索接口.最近在用phantom弄些爬虫,想想,真是美丽极了!有个豆瓣的接口,我都不用去爬数据,不用数据存储,丢给github page直接完事.豆瓣,Nice!最近也在看angular,于是就萌生了使用Angular + 豆瓣API 做一个web app.于是...网上回家就折腾了. 体验地址:http://vczero.github.io/t/h