Implementando um servidor REST com DataSnap

Delphi

09/10/2017

Olá pessoal, blz!?

Estou implementando um servidor REST com DataSnap padrão.

Eu estive olhando para o recurso de retorno de chamada usando a técnica de polling longo HTTP e estou curioso sobre os recursos deste no Delphi.

Hoje, eu já consegui enviar uma mensagem pelo método BroadcastMessage e recuperá-lo em um cliente JavaScript básico. Minhas dúvidas são:

1. O servidor sabe quais clientes estão "conectados"?
2. Posso recuperar uma lista desses clientes "conectados"?
3. O servidor consegue saber se um cliente "desconectou" (tipo, o browser/aba fechou)?

Segue exemplo de como foi implementado o teste para executar o callback REST:

Servidor: 

test := TJSONObject.Create; 
test.AddPair( 'message', 'Some message' ); 
test.AddPair( 'status', '1' ); 

DSServer.BroadcastMessage( 'TestChannel', test ); 

Client JavaScript: 

<html> 
<body> 
<button onClick="test()">Request HTTP long polling</button> 
<br><br><br> 

<div> 
<font style="font-family: tahoma"><b>Message:</b></font> <font id="proc" name="message" style="font-family: tahoma"></font> 
<br> 
<font style="font-family: tahoma"><b>Status:</b></font> <font id="status" name="status" style="font-family: tahoma"></font> 
</div> 

<script src="CallbackFramework.js"></script> 
<script src="connection.js"></script> 
<script src="ServerFunctionExecutor.js"></script> 
<script src="ServerFunctionInvoker.js"></script> 
<script src="ServerFunctions.js"></script> 
<script src="base64.js"></script> 
<script src="json2.js"></script> 

<script> 

function teste(){ 

var channel = new ClientChannel(null, "TestChannel"); 

console.log(channel); 

var callback = new ClientCallback(channel, null, 
function(jsonValue) { 

console.log(jsonValue); 

if (jsonValue != null) { 

if("message" in jsonValue){ 
document.getElementById("message").innerHTML = jsonValue.message; 
} 

if("status" in jsonValue){ 
document.getElementById("status").innerHTML = jsonValue.status; 
} 
} 

return true; 

}); 

channel.connect(callback); 

} 
</script> 
</body> 
</html>


Muito obrigado a todos os que podem ajudar.
Qualquer dúvida sobre como implementar os conceitos básicos de retorno de chamada no REST, estou aqui para dar uma ajuda também.

Muito obrigado!

Essa dúvida foi gerada a partir de um comentário no vídeo [url:descricao=Introdução - Curso de Multicamadas com Delphi e DataSnap - 1]//www.devmedia.com.br/introducao-curso-de-multicamadas-com-delphi-e-datasnap-1/26658[/url]
Júlio Ferreira

Júlio Ferreira

Curtidas 0
POSTAR