本文来自 @mdemo 的投稿(也是 End.js 的开发者),对比当下热门的“实时应用”探讨更好的解决方案。你可以通过微博和他进一步交流。
如果你还知道Firebase,可以看一下之前的介绍文章。简单的你可以说通过引入Firebase 框架,直接使用其 API 去构建实时性的应用,和 Meteor 相比, Firebase 应用起来简单许多。
Firebase和绝大多数云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase 最高能处理百万级的并发和 TB 级的数据传输,数据发生更改,同步敏感颗粒度基本达到 10 毫秒级别。另外通过简单的 API,你仅需要10几行代码,就可以写一个简易的实时性聊天室。
总结一下 Firebase 有以下几个优点:
云服务,随时扩展,高性能,无需部署管理自己的服务器,数据库,大大减少工作量;
API 简单,使用起来非常的方便,可大大减少代码量;
可通过网页对数据进行管理,很方便。
经过这段时间的使用,也发现几个缺点:
数据结构和数据库存储方式不一致(由于想支持 REST 方式读取数据);
不能部署自己的数据库(很多项目都需要自己维护数据库的);
目前数据操作能力教弱(有很多需求(稍微复杂点的查询)目前 Firebase 很难支持);
数据分析功能很弱(独立数据库的话,这部分很容易做的更强大);
不支持离线开发(废话。。)
小结:
Firebase 弱化了数据库的存在,看起来很酷,但是现实情况下出于安全、数据分析等考虑,自己维护数据库才是更合适的。
如果既想使用 Firebase 的便捷,又想自己维护数据库,那么现在可以尝试一下 End.js 。End.js 学习了 Firebase 的API,同时基于 socket.io 和 MongoDB ,提供了类似 Firebase 的功能。同时 End.js 是 Node.js 的一个 package,所以很方便的和其他 package 一起使用。
简单的入门使用
安装:
npm install end -g
服务器端使用:
End.init(mongo_config,sio_config);
客户端使用:
var chat = new End(‘chat‘,‘http://localhost:8080‘),
chatRoom = chat.child(window.location.search.split(‘?‘)[1]),
chatMsgs = chatRoom.child(‘msgs‘);
chatMsgs.on(‘child_added‘,function(msg){
$(‘.msgs‘).append(‘<div class="msg">‘+msg.value.name+‘ : ‘+msg.value.text+‘</div>‘);
});
$(‘#btn_send‘).click(function(){
var name = $(‘.txt_send_name‘).val();
var text = $(‘.txt_send_text‘).val();
chatMsgs.push({name:name,text:text});
});
这样通过End.js,同样的,十几行代码就可以写一个实时聊天室,查一查,聊天的数据都存放在Mongo数据库里面了。目前End.js核心功能已经完成,当然还存在很多问题,希望大家能够加入,一起完善起来 :)
更多详细内容,请进入 End.js 项目了解。