具有容错和持久消息存储的Websockets服务器

我开始尝试使用websockets。

有谁知道一个websocket服务器(开源或付费),提供了一个持久的websocket“渠道”存储? 我find的所有例子都没有提到耐用性 – 如果websocket服务器停机,所有“通道”数据都将丢失。

Pusher等服务并没有真正讨论它们是否解决了耐久性问题(我还没有收到技术支持的回应)。

很高兴推出自己的,但宁可不重新发明轮子。

编辑:

我不是在寻找websockets 101的信息。 这是容易获得和理解。

我正在寻找一个支持websocket的服务器(开源或付费),并有一个持久的websocket数据存储,以便在服务器发生故障的情况下,新的服务器可以接pipe原来的服务器。

两个主要目的:1.支持websocketsnetworking工作组http://tools.ietf.org/html/draft-ibc-websocket-dns-srv-02#section-5.1设想的故障转移scheme(最重要的是,在客户端连接到故障转移服务器时发送)2.支持新的订户必须接收所有以前发布的消息的情况。

当然,这可以在应用程序层处理…但这不是我所期待的。

编辑

所以,经过一番研究,以下安装的选项似乎是最强大的:

  • Kaazing Migratory
  • Migratory( http://migratory.ro )

托pipe的服务看起来“真实”

  • 推(很棒的API,但没有历史function)
  • PubNub(有历史)

如果websocket不可用,所有上述服务都可以优雅地回退到其他通信方式。

我无法find任何开箱即用的“开箱即用”群集,故障转移和持久的消息存储来播放历史logging。 有一些项目可以作为一个很好的起点,但不是我正在寻找的东西。

Hornetq是一个支持JMS,STOMP和Websockets + Stomp的通用消息代理。 它提供消息的持久性以及许多其他function。

频道数据是什么意思?

在服务器中运行的应用程序负责处理数据(认为LAMP)。

只要想一想,当你制作一个表单发布到自己的HTML文件,并把它放在一个普通的apache中,就可以保存多less数据。 所有的“表单数据”在每一个请求后都会丢失。

编辑:

你走错了路。

Websocket与持久性或持久性没有任何关系,SMTP,HTTP或IMAP也没有关系。 这只是一个运输说明。 (甚至连系统日志都没有谈论在RFC中的持久性)

我不知道你在找什么,但是我非常肯定它不是由websocket发送或接收的字节的持久性,而是字节发送后构造的数据的持久性。

这个问题已经解决了好几次了,我只会参考标准的RDBMS框架:

  • hibernate(Java)
  • SQLAlchemy(python)
  • ActiveRecord(ruby)

如果你只发送JSON,你可以使用像Riak,Redis,MongoDB,CouchDB这样的非关系型商店。

当然,这是由你来parsing数据,并从中创build一些适用于你的设置的东西。 我讨厌这样说,但保存通过websocket发送的信息,而不知道它的含义与使用tcpdump然后使用ed读取它的意义相同。

我可以build议将此问题迁移到stackoverflow我不认为serverfault是框架体系结构和开发的正确位置。

为了解决询问Pusher是否持久的问题的一部分,我可以确认,如果连接到Pusher服务的用户和他们连接的WebSocket服务器的用户死了,他们将自动重新连接到另一个WebSocket服务器。 通道数据只存在于WebSocket服务器中作为临时数据,而且我们有一个完全独立的系统,它允许我们的WebSocket服务器分配和使用来自连接客户端的信息。 目前我们并没有坚持信息在Pusher内。 数据只是简单地分布在连接的组件之间,比如我们的REST API和连接的客户端。

目前,如果在客户端重新连接期间发送消息,则用户将错过这些消息。 但是,我们正在实施频道的历史,这意味着我们将坚持渠道内的数据。 这意味着可以检索用户遗漏的任何消息。 由于我们的WebSocket服务器在丢失WebSocket服务器时不会处理数据的持久性,所以我们不会丢失通道数据。

PubNub – http://www.pubnub.com/ – 自动提供通道耐久性。 自动方式:当3G / 4G / WiFi掉线时,重新连接时丢失的消息被传送; 自动。 这对于移动客户端随时随地使用networking连接非常有用。 此外,PubNub提供了一个API来检查发送的过去消息的历史logging。

PubNub是免费的,你不需要注册帐户来使用它。 有可选的付费function。

查看最新发布的PubNub Powered移动应用程序: http : //www.projectmos.com/

所以,经过一番研究,以下安装的选项似乎是最强大的:

托pipe的服务看起来“真实”

  • 推(很棒的API,但没有历史function)
  • PubNub(有历史)

如果websocket不可用,所有上述服务都可以优雅地回退到其他通信方式。

我无法find任何开箱即用的“开箱即用”群集,故障转移和持久的消息存储来播放历史logging。 有一些项目可以作为一个很好的起点,但不是我正在寻找的东西。