如何连接我的移动应用程序(用lua编写)和我的服务器(用node.js编写)?

时间:2016-10-06 04:46:27

标签: node.js lua

我是lua和node js的新手,我正在尝试将我正在处理的移动应用程序连接到服务器。问题是它连接到服务器但我试图传递的数据丢失或者它没有到达服务器。 关于我正在做什么的错误的任何想法?

this is my lua code to connect to the server

local function store ()

    local headers = {}

    headers["Content-Type"] = "application/x-www-form-urlencoded"
    headers["Accept-Language"] = "en-US"

    local body = "fname="..fname
    local params = {}

    params.headers = headers
    params.body = body

    print(body)
    print(headers)
    print(params.body)
    print(params.headers)

    network.request( "http://192.168.56.2:8888", "POST", networkListener, params )

end



local function networkListener( event )
        if ( event.isError ) then
        print( "Network error!")
    else
        print ( "RESPONSE: " .. event.response )
        local serializedString = json.decode( event.response )

                            print(serializedString)

        --data = json.decode(serializedString)
        --print(serializedString.student[1])

    end
end

`

This is the code for the simple server I am trying to send a request to

var express = require('express');
var app = express();

var morgan = require('morgan');
var consolidate = require('consolidate');
var bodyparser = require('body-parser');
var parser = require('luaparse');

////////////////////////////////////////////////////////////////////////////////

app.listen(8888,function() {console.log('Server Running!');});

////////////////////////////////////////////////////////////////////////////////

app.set('views', __dirname + '/views');
app.engine('html', consolidate.nunjucks);
app.use(morgan('dev'));
app.use(bodyparser.urlencoded({ extended: true }));
app.use('/static', express.static(__dirname + '/static'));

////////////////////////////////////////////////////////////////////////////////

app.get('/', function(req, res) {
  res.render('index.html');
});

app.post('/', function(req, res) {
    var fname = req.fname;
    var lname = req.body.lastname;

    console.log("it went in");
    console.log(req.body.fname);
    console.log(req.body);
    console.log(req.header);
    console.log("nahuman");


  res.render('index.html');
 });

////////////////////////////////////////////////////////////////////////////////

1 个答案:

答案 0 :(得分:1)

您的代码没问题,只是您的networkListener()函数后,您的网络监听器store()似乎被声明为。 Lua无法访问之后声明的内容,除非是正向声明的。所以,lua找不到监听器,即使出现错误也不会被调用。应该在store()函数之前声明此函数,以便它可以访问它,如下所示:

local function networkListener(event)
    ...
end

local function store()
    ...
end

那,或者你可以转发声明它,有点像这样:

local networkListener = nil -- This forward declaration

local function store()
   ...
end

networkListener = function()
    ...
end

here。我知道情况就是这样,因为您提供了实际代码订单的屏幕截图。在尝试解决方案后,您始终可以使用调试器查看一切是否正常。我推荐使用IDE Here is more info about lua forward declaration