[关闭]
@wsd1 2016-10-13T02:03:32.000000Z 字数 4394 阅读 1422

价值源码整理:Realtime web方案

Awesome 201610 Realtime


目录

有价值的开源方案

模块化的实时开源方案 Deepstream.io(推荐)

https://deepstream.io/

德国柏林初创企业。开源 Nodejs & Engine.io;
用于订阅、同步和请求应答,不提供Http服务,不提供二进制流服务;
可以自定义对数据集的权限,并且可以支持后端http服务器转发认证;
可选择持久化、cache后端组件,若独立运行则仅提供分发服务;

性能:亚马逊EC2.t2机型6节点(核)一小时传递40亿消息。

Redis的Serveice包装webd.is(推荐)

http://webd.is/
C语言构造Redis http proxy,支持认证,为redis提供http和websocket接口。
这是个小程序,有研究改造的价值。

可以将标准输入输出转换为websocket管道的websocketd

https://github.com/joewalnes/websocketd

fanout.io(推荐)

开源方案,提供了两个重要软件来实现技术栈,Pushpin 和 Zurl。
Pushpin是一个反向代理,也是一个多连接的holder,支持http和websocket,后端可以使用仅仅使用http来为其提供支援。最简单的办法是http代理,除了直通之外,若后端服务对用户访问暂时无话可说,也可以返回保持指令,pushpin可以保持连接,直到后端主动调用pushpin的接口来主动发送数据,用户就可以得到滞后的返回数据。pushpin也支持ws代理,不过官方建议后端采用http来支援pushpin,和前面的例子类似,只用http也可以完成主动和被动的通讯模式。

Zurl是一个zeroMQ的websocket和http的adapter,你可以通过zq来实现http和ws的数据交换,当然也有很多不同的玩法,细节可见:
https://github.com/fanout/zurl

且也提供商业服务:
https://fanout.io/

协同编辑 sharejs

微信可用,目前升级为:shareDB
https://github.com/share/sharedb

remoteStorage

remotestorage是一种可以在页面中访问非同域数据库服务的协议,其采用类似于firebug的数据组织结构,口号是 让数据不再被垄断。
有个非常值得学习的地方,就是它在页面上设计了一个可以连接自己数据的widget,用户在服务界面可以设置自己的数据源,这个简直太棒了。

另外,网站提供了若干种后端实现,前端提供了js的库;其默认实现似乎不是使用ws,而是定时刷新的方式同步数据。
http://remotestorage.io/

商业服务

http://www.leggetter.co.uk/real-time-web-technologies-guide

backendless

http://backendless.com/

firebase

非常棒,付费。基于路径的document存储结构,同步存储服务,可以在不同客户端实现数据的同步。google收购

tambur.io(墙)

https://www.tambur.io
收费,特色在 可以有几种传递模式,订阅模式 在线信息 客户端交换方式

支持:Ruby Python PHP Java Erlang

即将开源hydna(墙)

https://www.hydna.com/
支持环境很多 客户端也很全面。
websocket支持binary方式,支持ws

Actionscript C++ Erlang Go (Push only) Java Javascript Julia (Push only) Lua (Push only) .NET Node.js Objective-C PHP (Push only) Python (Push only) Ruby (Push only)

全面完整可靠的pubnub(国内可用)

http://www.pubnub.com/
收费还可以 每天同时100客户端 15刀;3000客户端同时 49刀
使用Http长连接,有数据就返回;
全系列语言支持,包括arduino mebed electronicIMP 等

pusher.com(墙)

1M条500同时连接 49刀
http://pusher.com/

使用wss或者ws,文档区中描述了数据交换格式,基于websocket仅仅支持文本json,不支持binary。

Ruby Node.js Java .NET Python PHP C++ Groovy/Grails Coldfusion Perl Clojure
go

全面 便宜的Realtime.co(国内可用)

http://Realtime.co
每月 30000用户 1M消息 刀

(推荐)便宜全面的 goinstant

https://goinstant.com
1000活跃用户 8G存储 不限流量
可惜 似乎国内很慢

刚刚alpha的scaledrone

http://www.scaledrone.com/
支持 message + database
还未有收费计划

simperium

http://simperium.com/

其他未深入

可用于游戏的实时引擎

http://www.gamooga.com/
websocket

free:
100,000 incoming messages
25 GB data transfer
Unlimited Concurrent users

$10 /app/month
400,000 incoming messages
60 GB data transfer
Unlimited Concurrent users

将云盘转换为数据库的nimbusbase

http://nimbusbase.com/

大而全的wakanda

http://www.wakanda.org/
其自称为App factory。从model数据表设计到前端模板流水线设计方法,细节自觅。

开源的ruby方案 firehose.io

http://firehose.io/

基于Ruby + Redis(Lua脚本)
三个月前被更新过 用于商业投票系统 Poll Everywhere.
http://www.firehose.io

基于JVM的方案 async-io

http://async-io.org/

开源ruby implementation of the Pusher protocol Slanger

https://github.com/stevegraham/slanger

开源基于 Comet的消息订阅系统 faye

http://faye.jcoglan.com/

类似于firebase的nodejs开源服务

https://github.com/blittle/largemouth

derbyjs.com

开源nodejs实现http://hood.ie/

deployd

API 协议转换器 sockethub.org

基于 node redis

Bone.io

Nodejs方案

http://www.scaledrone.com/
http://beaconpush.com/
https://github.com/codeparty/racer
http://www.socketstream.org/

如何使用 levelDB REST WebSockets构造 firebase服务

http://procbits.com/2014/01/06/poor-mans-firebase-leveldb-rest-and-websockets
这篇文章很简单的实现了 类似于firebase的数据路径的数据库存储办法

目录

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注