У меня проблема с настройкой Callback Server в Delphi Tokyo.Я настроил сервер Datasnap WebBroker, затем я использую
FDSCallBackClientManager.RegisterCallback(sCallbackID,FDSCallBack);
на своем клиенте для подключения к серверу обратного вызова, он может подключиться и я могу отправить широковещательное сообщение другому клиенту, но через несколько минут после подключения, он будет отключен, когда я попытаюсь передать сообщение, это вызовет исключение, сообщающее, что время ожидания истекло.
Я использую протокол HTTP для подключения, этого не происходит при использовании протокола TCP / IP.Код - это просто мастер для создания приложения веб-брокера, ориентированного на Apache.Вот код для SQLConnection:
FConnection.Params.Values['CommunicationIPVersion'] := 'IP_IPv4';
FConnection.Params.Values['Hostname'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'Hostname',
'localhost'
);
FConnection.Params.Values['Port'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'WebPort',
'80'
);
FConnection.Params.Values['DatasnapContext'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'DatasnapContext',
'datasnap'
);
FConnection.Params.Values['URLPath'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'URLPath',
'rest'
);
FConnection.Params.Values['ConnectTimeout'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'ConnectTimeOut',
'1000'
);
FConnection.Params.Values['CommunicationTimeout'] :=
TCSClass_Configuration.ReadConfig(
ClientVariables.Config.FileName,
AProfile,
'CommunicationTimeOut',
'1000'
);
А вот код для подключения к серверу обратного вызова:
FDSCallBackClientManager.ChannelName := FCallbackChannelName;
FDSCallBackClientManager.DSHostname :=
FConnection.Params.Values['Hostname'];
FDSCallBackClientManager.DSPort :=
FConnection.Params.Values['Port'];
FDSCallBackClientManager.DSPath :=
FConnection.Params.Values['URLPath'];
FDSCallBackClientManager.CommunicationProtocol :=
FConnection.Params.Values['CommunicationProtocol'];
FDSCallBackClientManager.ConnectionTimeout :=
FConnection.Params.Values['ConnectTimeout'];
FDSCallBackClientManager.CommunicationTimeout :=
FConnection.Params.Values['CommunicationTimeout'];
sManagerID := TDSTunnelSession.GenerateSessionId;
sCallbackID := TDSTunnelSession.GenerateSessionId;
FDSCallBackClientManager.ManagerId := sManagerID;
if FDSCallBack = nil then
begin
FDSCallBack := TCSClass_Callback.Create(
Self,
sManagerID,
sCallbackID
);
end;
FDSCallBackClientManager.RegisterCallback(sCallbackID,FDSCallBack);
Так может кто-нибудь дать мне несколько советов, чего мне не хватает?