Pular para o conteúdo

callRemote

Servidor HTTP e JSON

Chama uma função exportada por outro servidor MTAX pela interface HTTP.

Indicando o servidor, o resource e a função:

bool callRemote ( string host [, string fila, number tentativas = 10, number timeout = 10000 ], string resource, string funcao, function callback [, ... ] )

Ou apontando direto para uma URL:

bool callRemote ( string url [, string fila, number tentativas = 10, number timeout = 10000 ], function callback [, ... ] )
NomeTipoPadrãoDescrição
hoststring—Endereço e porta HTTP do outro servidor, por exemplo "127.0.0.1:22005".
urlstring—URL completa do endpoint, quando você não usa a forma com resource.
filastring"default"Nome da fila. Requisições da mesma fila são feitas uma de cada vez.
tentativasnumber10Quantas vezes tentar conectar.
timeoutnumber10000Tempo limite de conexão, em milissegundos.
resourcestring—Nome do resource remoto.
funcaostring—Nome da função exportada.
callbackfunction—Chamada quando a resposta chega. Obrigatória.
...any—Argumentos da função remota.

Na forma com resource, o endereço montado é http://<host>/<resource>/call/<funcao>.

true se a requisição foi enfileirada. false, com o motivo no console de debug, se a lista de argumentos não corresponder a nenhuma das duas formas.

Argumentos do callback

SituaçãoO que o callback recebe
SucessoOs valores devolvidos pela função remota, cada um em um argumento, e 0 como último argumento.
FalhaA string "ERROR" e, em seguida, o código HTTP — ou 1 se o servidor não foi alcançado.

Tabelas passadas como argumento viajam como objetos ou arrays JSON. Elementos não têm como ser representados do outro lado e chegam como nil.

-- a função remota `consultarSaldo(nome)` devolve um número
callRemote("127.0.0.1:22005", "banco", "consultarSaldo", function(saldo, erro)
if saldo == "ERROR" then
outputDebugString("o servidor de banco não respondeu (" .. erro .. ")", 1)
return
end
outputDebugString("saldo: " .. tostring(saldo))
end, "Gabriel")