【问题标题】:How to access app hosted on meteor.com by DDP (WebSocket) protocol?如何通过 DDP (WebSocket) 协议访问meteor.com 上托管的应用程序?
【发布时间】:2013-09-22 08:28:19
【问题描述】:

我有一个Meteor 应用程序A 和另一个应用程序B,不使用Meteor,而是与应用程序A 进行一些数据交换。当我在本地网络中的机器上启动A 时它工作正常,但是当我将它部署在托管的meteor.com 上时它不会。服务器没有回复。

B 使用代码new WebSocket("ws://" + host + ":3000/websocket") 进行连接(DDP 协议)。 但是当我将 ws 更改为 wss 时,即使在 LAN 中的机器上它也不再工作 - 它没有回复。

当我在浏览器中打开应用程序 A 时,我看到它的主页使用了类似的 URL

wss://ddp--6774-{my host name}.meteor.com/sockjs/465/asf0b7da/websocket

问题:

  1. 如何让B 使用安全 WebSocket (wss) 进行连接?

  2. 如何将其连接到托管在 {my host name}.meteor.com 上的 A

  3. 如何强制A回复使用固定URL的请求,例如ws://{my host name}.meteor.com:3000/websocket?如何强制它使用 ws 而不是 wss?

  4. 我应该在 config.js 或 settings.js 中指定一些内容吗?

  5. 有没有办法为meteor.com主机指定环境变量,例如DDP_DEFAULT_CONNECTION_URL、NODE_OPTIONS?

【问题讨论】:

    标签: javascript web-services websocket meteor ddp


    【解决方案1】:
    1. websocket 服务器由 sockjs 处理,因此只要您使用标准 wss,它应该“正常工作”(参见 https://github.com/sockjs/sockjs-node)。如果您的客户端上的 websocket 实现是使用 websockets 构建的,那应该没问题。大气/陨石项目使用带有安全套接字的 node-ddp 客户端(存在一些问题,但我认为它们已排序)。 (又取决于faye-websockets library

    2. 我不太确定您使用哪种语言编写应用程序 B,但您需要使用 DDP 客户端连接到您的服务器,或者您可以编写一个,DDP 规范相当 open 和 @ 987654324@。 有几个 DDP 实现,其中一些可能需要更新到 pre-1 版本规范:

      此外,您可能会遇到麻烦,因为您发现与new WebSocket("ws://" + host + ".meteor.com/websocket") 的连接没有结果,这是因为meteor deploy 托管使用ddp 代理(通过ddp--xxxx-{my host name}.meteor.com 访问,但xxxx 也总是在您进行新部署时,您必须访问 html 文件并解析 ddp 服务器是什么,或者在每次部署应用程序时记下它。

    3. 如果您在端口 443 上连接,它应该是 wss。我不太确定 websockets 是否会重定向。这是服务器端的事情,所以如果你使用meteor deploy,你将无法控制它(也许当他们发布galaxy时这可能会改变)。也许force-ssl 包可能会有所帮助?不过,不太确定它是否也强制执行连接的 websockets 部分。

    4. 对于 DDP,您无法在设置中指定任何已知设置

    5. 对于meteor deploy 托管,您不能更改DDP 服务器以使用另一台服务器或更改环境变量(请参阅https://github.com/oortcloud/unofficial-meteor-faq)。

    请记住,meteor 部署托管还很年轻,而且制作流星的人还没有发布他们的星系解决方案,所以这可能会在未来发生变化。

    顺便说一句,对于布局/间距,我无法理解这个降价的东西。

    【讨论】:

    • 只是端口错误。在端口 443 上工作正常。为我感到羞耻。
    • 我无法连接到部署在 Heroku 上的应用。我已经尝试了所有列出的网址:wss://.com/websocket wss://.com/websocket:443 wss://.com:443 wss://.com/ ws://.com ws://.com/websocket ws://.com/websocket:443 ws://.com:443/websocket wss://.com:443/websocket ws://.com:3000/websocket wss://.com:3000/websocket ws://.com:3000 wss://.com:3000
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多