Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problema em requisições #2

Open
keitarobr opened this issue Nov 17, 2017 · 6 comments
Open

Problema em requisições #2

keitarobr opened this issue Nov 17, 2017 · 6 comments

Comments

@keitarobr
Copy link

Olá,

estou tentar executar um script que ua o NCLuaHTTP, porém ao fazer uma requisição, ele trava após receber a última parte da requisição. A rotina de callback nunca é chamada.

Usei seu exemplo de teste e o resultado é o mesmo.

Estou usando o NCLua e o Ginga, compilados de suas últimas versões, em um Ubuntu.

Alguma idéia do que possa estar acontecendo?

@manoelcampos
Copy link
Owner

Olá,
crie uma função main() e coloque todo o seu código lua dentro de tal função (inclusive os require). Em seguida, no final do arquivo lua inclua o código abaixo:

--Chama a função main em modo protegido, permitindo tratar erros gerados
local ok, res = pcall(main)

if not ok then
   print("\n\nError: "..res, "\n\n")
   return -1
end

Veja se é mostrada alguma mensagem de erro e informe aqui. Mais detalhes sobre uso da função pcall podem ser obtidos aqui.

@keitarobr
Copy link
Author

Olá Manoel,

fiz conforme sugerido:

...
function main()
http.request(host, callbackFirst, 'POST', params)
end

--Chama a função main em modo protegido, permitindo tratar erros gerados
local ok, res = pcall(main)

if not ok then
print("\n\nError: "..res, "\n\n")
return -1
end
....

Porém ele nunca "termina" (nclua main.lua), ficando a saída parada até que eu force a finalização (CTRL+C).

Depurando (mensagens), ele fica aguardando o fim da requisição porém não detecta que o servidor já parou de mandar dados.

Alguma idéia?

@manoelcampos
Copy link
Owner

Você precisa colocar todo o código dentro do main, inclusive os require.
Como você está rodando o script? Embutido em um documento NCL e executando o comando abaixo no terminal?

ginga --ncl documento.ncl

Já se certificou que a VM está tendo acesso à Internet?
Qual a URL da página que está tentando acessar? Pode usar o comando curl no terminal para fazer uma requisição a tal página de dentro da VM e ver se está tudo OK.

Pode disponibilizar o código para eu verificar?

@JulienLeal
Copy link

Eu estou tendo o mesmo problema com o load balancer. Quando é load balance, ele não envia a requisição, por isso nunca chega o callback. Quando é uma máquina normal, ele envia corretamente pro IP.

@manoelcampos
Copy link
Owner

@JulienLeal o módulo não suporta redirect. Se realmente precisar disso, descreva melhor seu cenário, o que está tentando fazer e verei a possibilidade de implementar esta feature.

@LeonardoSanBenitez
Copy link

Olá,
Eu estava tendo o mesmo problema, então alterei a linha 170 de:
local response = tcp.receive("*a")
para
local response = tcp.receive()
e me parece que resolveu.
Dependendo do tamanho do response isso não vai dar certo, mas no meu caso não tive problemas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants