callRemote
Chama uma função exportada por outro servidor MTAX pela interface HTTP.
Indicando o servidor, o resource e a função:
Sintaxe
Seção intitulada “Sintaxe”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 [, ... ] )Parâmetros
Seção intitulada “Parâmetros”| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
host | string | — | Endereço e porta HTTP do outro servidor, por exemplo "127.0.0.1:22005". |
url | string | — | URL completa do endpoint, quando você não usa a forma com resource. |
fila | string | "default" | Nome da fila. Requisições da mesma fila são feitas uma de cada vez. |
tentativas | number | 10 | Quantas vezes tentar conectar. |
timeout | number | 10000 | Tempo limite de conexão, em milissegundos. |
resource | string | — | Nome do resource remoto. |
funcao | string | — | Nome da função exportada. |
callback | function | — | 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>.
Retorno
Seção intitulada “Retorno”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ção | O que o callback recebe |
|---|---|
| Sucesso | Os valores devolvidos pela função remota, cada um em um argumento, e 0 como último argumento. |
| Falha | A 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.
Exemplo
Seção intitulada “Exemplo”-- a função remota `consultarSaldo(nome)` devolve um númerocallRemote("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")