我有一个 nodejs webapp,它作为客户端连接到 websocket,并在发生某些事件时向我发送推送通知。它还具有根据从同一 websocket 收到的信息向 REST API 发送请求的功能。
到目前为止,我一直在本地运行此应用,并始终保持笔记本电脑处于开启状态。但很快我就要出差了,因此全天候保持笔记本电脑处于开启状态已不再是一个选择。
我该怎么做才能能够全天候运行此应用程序(因为它必须始终连接到 websocket)而不必保持笔记本电脑运行?
我能想到的唯一选择是在 Digital Ocean Droplet 上本地运行该应用程序,然后在需要使用它时通过 RDP 进入 Droplet。这样它就可以全天候运行,我可以通过 RDP 进入 Droplet 随时访问它。我唯一担心的是,更便宜的 Droplet 是否足够强大,让我可以通过 RDP 进入它们并无延迟地使用该应用程序。
此应用无需在网络上访问。将其捆绑为 Electron 应用,然后在远程服务器上运行,是否比仅在 127.0.0.1 上运行更好?
感谢您的意见。
谢谢你!
答案1
是的,在这种情况下,在服务器上运行程序就是你要做的事情。
我可以推荐非吸吮服务经理(https://nssm.cc/)以确保程序保持运行。
至于如何让它在廉价的服务器实例上运行良好:将其转变为 Electron 应用程序将为您的程序添加几百兆的膨胀和全新的运行环境。
如果性价比很重要,您是否可以仅使用 HTTP GET 和 POST 命令与 Web 应用程序交互,而不是在服务器上运行本地 Web 浏览器?除非您的程序需要 GUI 才能运行,否则有可行的替代方案来运行支持完整桌面的 Windows 服务器,这可以稍微降低运行成本:
- 如果您不怕使用 Windows 命令行或 Powershell,则可以通过运行 Windows Server Core 安装来节省大量空间。如果您的云提供商支持运行最新的 Windows 版本,您甚至可以获得对 ssh 的原生支持,因此您无需通过 RDP 进入服务器(尽管我的经验是,如果该协议太慢而无法使用,您会遇到其他问题)。
- 另一种选择是根本不运行 Windows。与 Windows Server Core 相比,这可以为您节省一点开销。
(如果您决定允许 RDP,请采取措施仅允许通过 VPN 进行访问,或者最多仅允许从特定的已知 IP 地址进行访问。这不是一种设计用于安全地呈现给互联网的协议。)