Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在node.js应用程序和lua应用程序之间共享数据_Node.js_Lua_Node Webkit - Fatal编程技术网

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

在node.js应用程序和lua应用程序之间共享数据,node.js,lua,node-webkit,Node.js,Lua,Node Webkit,我有两个应用程序,一个运行在node webkit上的node.js应用程序和一个lua应用程序。我需要定期在两个应用程序之间传递数据,比如说每5到15秒 node.js应用程序是创建数据的应用程序,lua应用程序是使用数据的应用程序。数据只流向一个方向 我应该如何进行数据传输。我更喜欢json/xml作为数据,但实际上它也可以是任何其他格式。一次移动的数据量不大。它一次只有大约十个参数 我最初的想法是让node应用程序充当服务器,通过restapi提供数据,而lua应用程序只是使用LuaSoc

我有两个应用程序,一个运行在node webkit上的node.js应用程序和一个lua应用程序。我需要定期在两个应用程序之间传递数据,比如说每5到15秒

node.js应用程序是创建数据的应用程序,lua应用程序是使用数据的应用程序。数据只流向一个方向

我应该如何进行数据传输。我更喜欢json/xml作为数据,但实际上它也可以是任何其他格式。一次移动的数据量不大。它一次只有大约十个参数

我最初的想法是让node应用程序充当服务器,通过restapi提供数据,而lua应用程序只是使用LuaSocket之类的工具读取页面。但是,如果两个应用都驻留在同一台机器上,有没有更好的方法进行传输呢?目前lua应用程序正在Windows中运行,但这可能会改变


我的背景是web开发,所以在应用程序之间共享数据时,我完全不知所措。我对lua也是新手。谢谢你的回答。

完成这项任务有很多方法。我将描述其中的两个

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

除非这仅仅是一个测试应用程序,否则在你的应用程序中建立这样的容错性是很好的。在您的情况下,想象一下如果消费者Lua应用程序宕机,或者相反,Node.js producer应用程序宕机。您不希望一个应用程序上的故障影响另一个应用程序。在生产环境中,最好隔离像这样的应用程序和任务。这种方法的另一个优点是,有一天您可能会决定用Node.js、Scala等重写您的使用者,或者用不同的语言编写多个使用者。这不需要您的服务器停止或更改。它甚至不必知道消费者的任何变化

因此,您的生产服务器总是独立地将数据推送到远程数据存储/队列,而使用者服务器则以自己的速度从该远程存储读取数据,然后删除数据

如果使用数据库,您将读取新记录并使用它们,一旦使用完毕,将它们从数据库中删除。此方法允许您出于任何原因(如升级)独立关闭消费者和生产者应用程序

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