如何通过DDP(WebSocket)协议访问meteor.com上托管的应用程序?

boq*_*apt 9 javascript web-services websocket meteor ddp

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

B使用代码new WebSocket("ws://" + host + ":3000/websocket")进行连接(DDP协议).但是,当我将ws更改为wss时,即使使用局域网中的机器,它也不再起作用 - 它不会回复.

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

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

问题:

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

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

  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?

Aks*_*hat 7

  1. websocket服务器由sockjs处理,因此只要你使用标准的wss就应该"正常工作"(参见https://github.com/sockjs/sockjs-node).如果您的客户端上的websocket实现是为了使用websockets而构建的,那么它应该没问题.大气/陨石项目使用带有安全套接字的node-ddp客户端(有几个问题,但我认为它们已经排序).(反过来,这取决于faye-websockets库)

  2. 我不太确定您正在编写应用程序B的语言,但是您需要使用DDP客户端连接到您的服务器,或者您可以编写一个,DDP规范相当开放可逆.有一些DDP实现,有些可能需要更新到1之前版本规范:

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

  3. 如果你在端口443上连接它应该是wss.我不太确定websockets会重定向.这是服务器方面的事情,所以如果你使用meteor部署你还不能控制它(也许当它们释放galaxy时,这可能会改变).也许这个force-ssl包可能有帮助吗?但是,不太确定它是否也强制实施连接的websockets部分.

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

  5. 对于meteor部署托管,您无法更改DDP服务器以使用其他服务器或更改环境变量(请参阅https://github.com/oortcloud/unofficial-meteor-faq).

请记住,流星部署托管是非常年轻的,制作流星的人仍然没有发布他们的星系解决方案,所以这可能会在未来发生变化.

顺便说一下布局/间距,我不能得到这个降价的东西.

  • 这是错误的端口.适用于443端口的罚款.对我来说很遗憾. (2认同)