在node.js应用程序和lua应用程序之间共享数据

我有两个应用程序,node-webkit上运行的node.js应用程序和lua应用程序。 我需要在两个应用程序之间按常规间隔传递数据,例如每5到15秒。

node.js应用程序是创build数据的应用程序,而lua应用程序则是消费数据的应用程序。 数据只能走向一个方向。

我应该怎么做数据传输? 我更喜欢json / xml的数据,但实际上它也可以是任何其他格式。 一次移动的数据并不大。 它一次只有十个参数。

我最初的想法是让节点应用程序充当服务器,并通过其余的API来提供数据,并且lua应用程序只是使用LuaSocket或者其他类来读取页面。 但是,如果两个应用程序驻留在同一台机器上,是否有更好的方法来进行传输? 目前lua应用程序正在Windows中运行,但可能会改变。

我的背景是在web开发中,所以在应用程序之间共享数据时我完全失去了。 我也是新来的卢阿。 感谢您的任何答案。

有很多方法可以完成这个任务。 我会描述其中的两个。

我最喜欢的第一种方法是使用远程队列,如Apache Kafka,Redis,RabbitMQ,甚至Zookeeper作为小数据,或者存储在数据库中。 所有这些远程存储系统都有非常好的Node.js模块,并且它们都可以很好地处理JSON和任何其他数据types。

除非这只是一个简单的testing应用程序,否则在您的应用程序中构build这样的容错是很好的。 在你的情况下,想象一下,如果消费者Lua应用程序崩溃,或者相反,Node.js生产者应用程序崩溃。 您不希望一个应用程序的失败影响另一个应用程序。 在生产环境中,最好是隔离这样的应用程序和任务。 这种方法的另一个优点是有一天你可能决定用Node.js,Scala等重写你的用户,或者有不同语言的多个用户。 这不要求您的服务器停止或更改。 它甚至不需要知道消费者的任何变化。

因此,您的生产服务器始终独立地将数据推送到远程数据存储/队列,然后使用者服务器读取数据,然后按照自己的步调从该远程存储中删除数据。

如果你使用了一个数据库,你将读取新的logging,消耗它们,一旦完成,将它们从数据库中删除。 这种方法允许您closures消费者和生产者应用程序,因为升级等任何原因。

另一种方法是通过TCPbuild立从生产者服务器到消费者服务器的直接networking连接。 生产者服务器将是一个将数据推送到消费者服务器的客户端。 如果应用程序位于不同的物理机器上,则可以使用net内置模块来完成。 但是正如你所看到的,这是不太可靠的解决scheme,因为如果消费者宕机,产品不能再推送新的数据,在这种情况下,你应该考虑你应该怎么做:丢弃或存储在某个地方。 如果存储在某个地方,则最终将重新实现上面解释的第一种方法。