我的服务器托管在Heroku上。我的应用程序的数据源来自外部应用程序。以下是获取数据的方法:
- 初始化一个连接到外部服务器套接字的进程。
- 保存通过此套接字连接传输的数据。
现在我的问题是,在Heroku上是否可以启动这样的进程,需要不断运行以侦听外部服务器上的套接字?
在Heroku中,进程只能监听80端口上的HTTP流量。正如Andy所提到的,Node.js是在Heroku上运行此类服务的最佳选择。
我认为这可能是Node.js的工作,您可以在Heroku上运行它。逻辑流程将是使用Node.js应用程序连接到派对服务器,然后当接收到数据时,它将触发“回调”方法。然后,该方法可以使用数据向Rails服务器发出Web请求。
如果想了解类似此类操作的示例,请查看pubnub node.js示例应用程序:
如果我理解你的问题正确,你需要在Heroku上启动一个连接到外部服务器的后台进程--该进程然后将API数据保存在本地?
访问外部服务:据我所知,Heroku不限制访问外部主机或端口。实际上,我有一个应用程序可以连接到mongohq上的mongodb数据库。
长时间运行的进程:使用新的Celadon Cedar堆栈肯定是可能的。新的cedar堆栈使用一种称为Procfile的概念,这使得运行任何脚本(例如ruby,bash,node.js)作为进程成为可能。
保存数据:Heroku具有只读文件系统(除了/tmp),因此您需要将来自API的数据保存在数据库(或类似位置)中。