【问题标题】:Meteor compatibility流星兼容性
【发布时间】:2012-12-09 17:25:24
【问题描述】:
我正在考虑使用 Meteor 来创建我的下一个应用程序,但我之前有几个问题。
据我了解,服务器和客户端之间的通信使用 DDP 协议/WebSockets。哪些浏览器支持 Meteor?
Meteor通信协议和socket.io有什么区别?
如果没有区别,有没有可能用socket.io代替原生的Meteor DDP协议/WebSockets?
Meteor 是否可以与 Yeoman(由 Paul Irish 开发的工作流框架)结合使用?
非常感谢您!
【问题讨论】:
标签:
node.js
websocket
socket.io
meteor
yeoman
【解决方案1】:
让我们看看我是否可以按照它们出现的顺序回答你的问题......
- Meteor 支持所有主流浏览器。 IE、Chrome、Safari。有关 IE 的版本,请参阅上面 Rahul 的指针。
-
socket.io 是消息级协议,负责发送、接收和路由消息。相比之下,DDP(Meteor 的协议)是一个更高级别的协议,它模拟了将数据库部分复制到浏览器和 RPC 调用。实际上,DDP 使用在幕后的消息级协议:sockjs。
- 打破 Meteor 的消息级传输以实现插入式替换目前需要进行一些重构,并且需要对 Meteor 的源代码进行修改。将来,消息级传输可能会更加封装,但 Meteor 通常会在那里提供一个合理的默认值 - 可能总是或可能不总是基于
sockjs。
- 虽然我没有同时尝试过 Meteor 和 Yeoman,但它们涵盖了很多相同的领域。两者都想为您运行本地网络服务器;两者都对您的项目布局有意见,都可以选择缩小您的 javascript,都想管理您的包(Meteor 中对此的更多支持正在开发中),都为您的应用程序提供初始样板等。我怀疑它在开发 Meteor 应用程序时,使用纯 Meteor 工作流程会容易得多。
【解决方案2】:
有一些包可以帮助实现普通的 websocket 功能 - Streamy 和 Streamy-rooms 浮现在脑海中。但是 Web 套接字功能和 DDP 之间存在很大差异。 DDP 使用 websockets,但更多。 websockets 中不包含诸如乐观更新之类的东西。此外,通过在客户端和服务器上都有一部分数据库,您不必连接套接字发射器和接收器。这使开发更加直观和快速。如果您想要该特定行为,您还可以使用列出的包,例如,如果您不想将某些更改持久保存到数据库但仍将它们发送给特定用户。