【发布时间】:2016-02-20 12:15:39
【问题描述】:
我有一个旧版 Sails.JS 项目,目前使用的是 Sails 版本 0.10.5。我想将项目升级到 Sails 0.11.x 及更高版本,但有一个问题。该项目作为原生移动应用程序的后端,因此与升级 Web 服务器不同,您只需将新的sails.io.js 和 socket.io 客户端库链接到您的网站,我们不能依赖用户来升级原生应用程序.
我是唯一一个遇到这个问题的人似乎不合理,所以我想向社区提出这个问题,看看是否有什么我没有想到的出色之处可以使升级无缝进行。
我想到的想法是:
-
使用子域 (https://v2.domain.com/api/...) 运行应用程序的两个版本。这显然是最明显的解决方案,但需要相当多的服务器配置才能完成,而且我们目前正在运行在定制环境能力有限的 PAAS 上,因此这可能需要切换提供程序。
除了采用这条路线所涉及的工作之外,还需要决定如何处理代码库。您可以为两个sails 版本维护两个代码分支,但这意味着修复错误两次和两倍的错误可能性。或者您可以在代码中添加规定以检查它在哪个版本的风帆下运行。这些看起来都不是很干净,但如果归根结底,我想我会选择这两个选项中的第二个。
挖掘sails.js核心代码,想办法让socket.io 0.9和socket.io 1.0同时并行运行。这将允许我让所有用户在关闭 0.9 支持之前更新他们的移动应用程序。不过,这也有明显的缺陷,其中主要是在框架级别执行如此全面的更改。
我很想了解其他人在这种情况下所做的事情,如果解决方案是继续使用 Sails 0.10.5,那很好,但我很想获得原生 Socket.IO 的额外好处为 v.1.0 推出的库,而不是我目前使用的半家用纺解决方案。此外,如果能继续获得安全和功能更新,那就太好了。
【问题讨论】:
-
我们面临同样的问题 - 我们有数百个客户端应用程序使用旧的 socket.io 客户端(打包在应用程序中)。我们必须为每个客户端运行 2 组服务器——旧的 0.10 和新的 Sails 0.12。只是想知道你们是否实施了解决方案,以及你们的效果如何?
-
我从来没有在这方面找到任何东西,我们最终短暂地运行了两台服务器。这非常令人沮丧,但这是进行过渡的唯一可靠方法。抱歉,我无法提供更多帮助。
标签: node.js socket.io sails.js