观看了Meteor Framework 截屏视频.我注意到更改数据库无缝地更改了浏览器中的数据.通常是AJAX,只需每隔几秒重新加载一部分页面,但在这里我没有注意到浏览器重新加载.他们是如何在流星中实现这一目标的?是Node.js依赖吗?
更新:Toby Catlin提出了另一个有趣的问题.Meteor如何处理不同的浏览器?
Hud*_*don 17
他们使用Session和Meteor.autosubscribe(来自Meteor API)确保更改反映在客户端上.
这些Meteor API使用SockJS的XHR(XMLHttpRequest).SockJS是WebSocket仿真实用程序.因此,当服务器上的某些内容发生变化时,SockJS会确保发送XHR,并且更改的数据位于JSON响应中.
是的,Meteor完全依赖于Node.js. 来自Meteor文档:
Meteor应用程序是在客户端Web浏览器中运行的JavaScript,在Node.js容器内的Meteor服务器上运行的JavaScript以及所有支持HTML片段,CSS规则和静态资产的混合体.Meteor自动化这些不同组件的包装和传输.而且,您对如何选择在文件树中构建这些组件非常灵活.
唯一的服务器资产是JavaScript.Meteor收集所有JavaScript文件,不包括客户端和公共子目录下的任何内容,并将它们加载到光纤内的Node.js服务器实例中.在Meteor中,您的服务器代码在每个请求的单个线程中运行,而不是以Node的典型异步回调样式运行.我们发现线性执行模型更适合Meteor应用程序中的典型服务器代码.
资料来源:http://docs.meteor.com/和https://github.com/meteor/meteor
小智 5
有一些技术允许服务器将数据推送到浏览器而无需浏览器请求它.这种技术的术语是Comet [wikipedia.org],大多数技术都与AJAX有关(有一种名为Comet的漂白剂和一种名为Ajax的清洁产品).有许多连接类型:长轮询,流式XHR,永久帧,服务器发送事件和websockets.Socket.IO是一个很好的库,它为流服务器提供连接类型.
您确实需要一个支持Comet连接的服务器.你可以谷歌搜索当前的但不是我的头脑:node.js,tornado,cometd,orbited,Jetty streaming
我猜想Metor会根据浏览器的功能使用不同的连接类型,例如Chrome的websocket和IE的长轮询.如果有人能给出更具体的答案我会感兴趣