0

这个 μService 架构作为后端运行,一个 consul 实例管理所有服务。有一个特定的服务器,A 用 Sails 制作,并带有一些相关的套接字逻辑,我想使用sails.io 从另一个服务 B 使用。

每个服务都在自己的 Docker 容器中运行,但它们都连接到同一个网络。

所以,在开发的时候,我在本地运行A容器,用节点脚本模拟服务B,逻辑如下图所示。鉴于我只是在使用开放端口运行容器,因此服务 URL 非常简单,因此 Sails.io 用于连接的 URL 是localhost:PORT. 这里的一切都很好。

当服务 A 在 μService 架构中运行时,问题就出现了。每个服务都在自己的 URL 中运行,例如backend.com/api/SERVICE_NAME,充当命名空间,命名空间下的每条路由都实际命中SERVICE_NAME服务。所以现在sails.io 在连接到服务A 时出现问题,猜是因为路线发生了变化。

这些是我尝试过的所有变化const io = sailsIOClient(socketIOClient);

io.sails.url = 'http://backend.com/api/SERVICE_NAME';

然后

io.sails.url = 'http://backend.com';
io.sails.path = '/api/SERVICE_NAME'

然后

io.sails.url = 'http://backend.com';
io.sails.path = '/api/SERVICE_NAME/socket.io/'

然后我偶然发现了这个,它指的path是 socket.io 的连接函数上的一个参数(这里是具体的)。我试过了,设置io.sails.autoConnect为 false 并调用io.sails.connect(),但我无法连接到 Sails 应用程序。

        Socket is trying to reconnect to Sails...
_-|>_-  (attempt #293)

我相当确定问题是客户端 io 无法到达找到 Sails 应用程序的正确路径,因为已设置架构。

有人处理过类似的情况吗?非常感谢您的建议。

4

0 回答 0