升级path从Sails.JS 0.10到0.11保持向下兼容性

我有一个传统的Sails.JS项目,目前在Sails版本0.10.5。 我想将项目升级到Sails 0.11.x及以后版本,但有一个问题。 这个项目作为本地移动应用程序的后端,因此与升级一个Web服务器不同,您只需将新的sails.io.js和socket.io客户端库链接到您的网站,我们就不能依赖用户升级原生应用程序。

我是唯一一个遇到这个问题似乎是不合理的,所以我想向社区提出一个问题,看看是否有什么辉煌的东西让我没有想到要使升级顺利进行。

我想到的想法是:

  1. 使用子域( https://v2.domain.com/api/ .. )运行两个版本的应用程序。 这显然是最明显的解决scheme,但需要相当数量的服务器configuration才能实现,而我们目前正在运行定制环境能力有限的PAAS,因此这可能需要交换机提供商。

    除了参与这条路线的工作之外,还有关于如何处理代码库的决定。 您可以为两个风帆版本维护两个代码分支,但这意味着修复错误两次和两次错误的可能性。 或者你可以在代码中添加条款来检查它运行的是哪个版本的sails。 这些看起来都不是很干净,但我认为如果这两个选项中的其中一个select了第二个选项的话。

  2. 通过sails.js核心代码挖掘,并find一种方法来获得socket.io 0.9和socket.io 1.0并行运行。 这将允许我让所有用户在closures0.9支持之前更新他们的移动应用程序。 虽然这也有明显的陷阱,其中主要是在框架层面进行全面的变革。

我很想知道其他人在这种情况下做了些什么,如果解决scheme只是保持在Sails 0.10.5上,那很好,但是我很想得到原生Socket.IO库的额外好处,出来v.1.0,而不是我目前使用的半家庭纺解决scheme。 此外,继续获得安全性和function更新将是很好的。

解决这个问题的唯一方法就是设置一个nginx反向代理,它以当前的服务器为基础,然后在每个创build的path前加上另外一个带/ v2path的服务器,然后将用户迁移到/ v2path能够,我会build议使用相同的git回购两个服务器,但维护他们在不同的分支机构,以便您可以合并到两个新的更改,如果碰巧需要。