【问题标题】:How to build a MeteorJs application server-side only?如何仅在服务器端构建 MeteorJs 应用程序?
【发布时间】:2016-05-18 22:38:02
【问题描述】:

我正在重构流星在 0.5.x 中的应用程序构建 我需要扩展应用程序,所以我现在将有不同的应用程序能够在不同的核心上运行。其中之一将专用于 Web 应用程序,而其他的仅用于服务器。对于这种情况,我不希望 Meteor 提供任何服务,它不能是 http 服务器。

我尝试以不同方式配置包列表(文件 .meteor/packages:

# standard package of meteor-platform in server app only
application-configuration
autoupdate
base64
binary-heap
callback-hook
check
ddp
deps
ejson
follower-livedata
geojson-utils
id-map
json
logging
meteor
mongo
observe-sequence
ordered-dict
random
retry
routepolicy

# standard package of meteor-platform in client app
#blaze
#blaze-tools
#boilerplate-generator
#html-tools
#htmljs
#jquery
#minifiers
#minimongo
#reactive-var
#spacebars
#spacebars-compiler
#templating
#tracker
#ui
#webapp
#webapp-hashing

# specific app package

但是当我运行时#>流星 然后它告诉我服务器正在监听,所以它不起作用

我也尝试删除“浏览器平台”:

meteor remove-platform browser

但它告诉我它不能在这个版本的流星中删除平台

我哪里错了?软件包列表不适合仅服务器应用程序吗?

【问题讨论】:

  • 请进一步解释您的意思是“它不能是http服务器”。 Meteor 作为一个 Web 框架,本质上是 http。你说的话听起来像是在问“我怎么能让 apache 不是 http?”
  • 您仍然希望您的 Meteor 应用程序能够接受 DDP 连接吗?还是只访问数据库?
  • NodeJs 是一种语言,您可以在其上构建 Web 应用程序 / 命令应用程序 / ... Meteor 依赖于 Node,因此我希望构建一个不提供 http 响应的应用程序。想象一下,我想监视服务器上的文件夹,读取文件内容并将它们存储在 MongoDB 中。我不需要 Http 服务器。我使用 MeteorJs 是因为我喜欢它的 API,它让我可以轻松地做很多事情。所以在我的情况下,我不需要 DDP,只需要 Mongo Collection 一些其他的东西。

标签: meteor


【解决方案1】:

目前不可能,“也许在未来的版本中”as someone from MDG says

【讨论】:

    【解决方案2】:

    Meteor 依赖 DDP 包来监听传入的请求,DDP 监听 websockets,基本上就是 http。

    因此它必须在某个端口上监听某些东西。如果它不听,你就不能告诉应用程序做任何事情或要求它做任何事情,那么它有什么用呢?

    但是,如果您不希望您的应用在其绑定的端口方面干扰您的其他应用,请在启动时为其指定一个自定义端口。

    $ meteor run --port 12345
    

    【讨论】:

    • Meteor 依赖 NodeJS 和 MongoDb (实际上),DDP 只是框架的一个组件,但你不必使用它,因为框架中的很多包都不依赖 DDP:例如,服务器上的集合只是监视 opLog(或轮询)......所以应该可以在没有 Http Server 的情况下启动 MeteorJS(就像 NodeJs 一样)
    • 理论上你是对的。但是有些包在省略时会使整个 Meteor 变得毫无用处。以underscore 为例,您根本无法删除它,尽管它就像任何其他软件包一样。 DDP 是让其他系统与 Meteor 对话的原因。如果没有什么可以与 Meteor 对话,那么它就会变得自给自足,就像cron。因此,我完全不同意你的说法。 DDP 是一个核心包,应该也不能删除。
    • 啊,我刚刚在您的原始帖子中阅读了您的其他评论。嗯...有趣的想法,但我不会推荐它。 Meteor 擅长随处可见的反应性数据、实时模板等。对于像查看文件内容和在 mongodb 中插入数据这样的任务,node 会容易得多。 Meteor 似乎没有提供太多价值。除非你能就你得到的任务提供更具体的论据。
    • 所以我可以想象两个过程:从一个文件夹中查找文件,在这种情况下,是的,纯节点就足够了。但是如果我做相反的事情:观察收集和写入文件中添加的项目,发送邮件,为添加的每个文档调用 Web 服务,在这种情况下,Meteor 提供了我需要的一切,而 http 服务器是无用的(希望它有助于理解)。
    • 这更有意义,是的。但是,仍然有很多基于节点的轻量级替代方案。甚至纯基于 mongo (mongodb.github.io/node-mongodb-native/api-generated/cursor.html) 的替代方案也可以从 mongo 中获取流、附加事件处理程序、写入文件、发出 http 请求等。是的,meteor 确实做了所有这些事情,而且相当容易,但老实说,它是不是它擅长的地方。但是,是的,您可以使用任何东西来做任何事情。通过推论,可以用纯汇编编写出色的 Web 应用程序,但我们不这样做。我们也不会将 ddp 从流星中拿走 :)
    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多