Ir al contenido


Foto

Delphi y Datasnap.DsSession


Mejor respuesta MANUEL ESPLA , 23 septiembre 2021 - 10:12

Tras hacer pruebas, esto funciona para ANDROID:
 

delphi
  1.   DSClientCallbackChannelManager1.ManagerId := TDSSessionHelper.GenerateSessionId; 
  2.   FMyCallbackName                           := TDSSessionHelper.GenerateSessionId;

 
Hace lo mismo, pero en vez de depender de DataSnap.DSSession, que no soporta ANDROID, depende de Datasnap.DSCommon que no presenta problema. Ir al mensaje completo


  • Por favor identifícate para responder
4 respuestas en este tema

#1 MANUEL ESPLA

MANUEL ESPLA

    Newbie

  • Miembros
  • Pip
  • 9 mensajes

Escrito 23 septiembre 2021 - 05:32

Buenas tardes.

 

Tengo un programa que a través del componente TDSClientCallBackChannelManager gestiona unos mensajes a través de un servidor DATASNAP. Quiero hacerlo para ANDROID e IOS, y el primer problema es que  me dice en el Uses que DataSnap.DsSession no existe en ANDROID y supongo que tampoco en IOS. Alguna respuesta.

 

Gracias


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.288 mensajes
  • LocationMéxico

Escrito 23 septiembre 2021 - 07:24

Buenas tardes.
 
Tengo un programa que a través del componente TDSClientCallBackChannelManager gestiona unos mensajes a través de un servidor DATASNAP. Quiero hacerlo para ANDROID e IOS, y el primer problema es que  me dice en el Uses que DataSnap.DsSession no existe en ANDROID y supongo que tampoco en IOS. Alguna respuesta.
 
Gracias

 
 
Hola MANUEL ESPLA,
 
Supongo que es porque DSSession es para Servidor, esa clase está contenida en la biblioteca DataSnapServerXXX.bpl

 

Saludos


  • 0

#3 MANUEL ESPLA

MANUEL ESPLA

    Newbie

  • Miembros
  • Pip
  • 9 mensajes

Escrito 23 septiembre 2021 - 08:16

En la zona de Interface utilizo:

delphi
  1. type
  2.   TMyCallback = class(TDBXCallback)
  3.   public
  4.     function Execute(const Arg: TJSONValue): TJSONValue; override;
  5.   end;  

Ya en Implementación la funcion es:


delphi
  1. function TMyCallback.Execute(const Arg: TJSONValue): TJSONValue;
  2. begin
  3.   PanelForm.QueueLogMsg(Arg.ToString);
  4.   Result := TJSONTrue.Create;
  5. end;

 
Después de conectar con el Servidor de DataSnap, se utiliza estas instrucciones que las tengo en el FormShow:
 

delphi
  1. DSClientCallbackChannelManager1.ManagerId := TDSTunnelSession.GenerateSessionId;
  2.   FMyCallbackName                           := TDSTunnelSession.GenerateSessionId;
  3.   DSClientCallbackChannelManager1.RegisterCallback(FMyCallbackName,TMyCallback.Create);
  4.   LocalClientId   := DSClientCallbackChannelManager1.ManagerId;
  5.  
  6.   LocalCallbackId := FMyCallbackName;

 
A DataSnap.DsSession pertenece TDSTunnelSession.
 
Funciona bien en Windows, pero en ANDROID me dice que mo existe esa libreria.
  • 0

#4 MANUEL ESPLA

MANUEL ESPLA

    Newbie

  • Miembros
  • Pip
  • 9 mensajes

Escrito 23 septiembre 2021 - 10:12   Mejor respuesta

Tras hacer pruebas, esto funciona para ANDROID:
 

delphi
  1.   DSClientCallbackChannelManager1.ManagerId := TDSSessionHelper.GenerateSessionId; 
  2.   FMyCallbackName                           := TDSSessionHelper.GenerateSessionId;

 
Hace lo mismo, pero en vez de depender de DataSnap.DSSession, que no soporta ANDROID, depende de Datasnap.DSCommon que no presenta problema.
  • 1

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.288 mensajes
  • LocationMéxico

Escrito 23 septiembre 2021 - 02:00

Tras hacer pruebas, esto funciona para ANDROID:
 


delphi
  1.   DSClientCallbackChannelManager1.ManagerId := TDSSessionHelper.GenerateSessionId; 
  2.   FMyCallbackName                           := TDSSessionHelper.GenerateSessionId;

 
Hace lo mismo, pero en vez de depender de DataSnap.DSSession, que no soporta ANDROID, depende de Datasnap.DSCommon que no presenta problema.

 
 
Ya veo, que bien, utiliza un Helper para darle la vuelta.
 
Muchas gracias por la retro. (y)
 
Saludos
  • 0