这个流星应用服务器代码尝试使用另一个流星工作者的方法。应用程序和工作人员都位于同一台服务器EC2上的独立泊坞窗容器中。工人在端口9000
当应用程序触发的方法appCallingWorker
运行,我期望看到工人容器注销字符串“工人从应用程序称为”但是所有docker logs containerID
给的多线看起来像这样:
stream error Network error: ws://localhost:9000/websocket: connect ECONNREFUSED 127.0.0.1:9000
流星在同一主机上的容器之间的DDP呼叫
如何从应用程序使用工作人员的方法? THX
//App/server/main.js
let workerConn = DDP.connect('http://localhost:9000');
Meteor.methods({
'appCallingWorker':() => {
workerConn.call('workerMethod');
}
});
//Worker/server/main.js
Meteor.methods({
'workerMethod': function() {
console.log('worker called from App');
}
})
编辑
的EC2是一个容器实例在AWS ECS。和containerDefinitions.portMapings.containerPort和HOSTPORT都被设置为9000
泊坞窗主机上编辑2
的iptables -L -n表示容器监听9000的IP,我的代码替换本地主机与所述IP,现在它工作。但是,如果主机重新启动或容器重新启动,则说ip可以改变...另一个问题找到解决方案。
连接被拒绝,这意味着没有任何监听localhost:9000。如果你的应用程序在不同的码头容器中,他们是否有自己的IP地址,并且你应该试图连接到它? – Mikkel
@Mikkel我在对我的文章进行编辑时给你回复了很好的观察。 thx为您的输入。如果我的流程不完整,请提供更多信息。 –
你所做的只是用127.0.0.1替换localhost - 这不是有效的网络地址, – Mikkel