WebSocket Verbindung wird scheinbar nicht geschlossen !

Alle Fragen zur Netzwerkkommunikation
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: WebSocket Verbindung wird scheinbar nicht geschlossen !

Beitrag von pluto »

Scheinbar habe ich eine mögliche Lösung gefunden, ob es dabei bleibt, wird die Zeit zeigen:

Code: Alles auswählen

// In der Unit "blcksock"
procedure TTCPBlockSocket.CloseSocket;
begin
  if FSSL.SSLEnabled then
    FSSL.Shutdown;

  if (FSocket <> INVALID_SOCKET) and (FLastError = 0) then
  begin
    sleep(40);
    SetLinger(true,0);
    Synsock.CloseSocket(FSocket);
    Purge;
  end;

  inherited CloseSocket;
end;       
Der Schlüssel war das sleep vor dem SetLinger.
Ich finde diese Lösung Unsauber.... ich denke, ich behandle hier nur ein Symptom des Problems. Aber so scheint es zu gehen.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: WebSocket Verbindung wird scheinbar nicht geschlossen !

Beitrag von pluto »

War leider ein Irrtum.... nach weiteren Versuchen, hat sich herausgestellt, dass es doch nicht klappt. Jedenfalls nicht zuverlässig.

Edit1:
unit WebSocket2

Code: Alles auswählen

procedure TWebSocketServerConnection.TerminateThread;
begin
//  write(#13#10, 'TWebSocketServerConnection.TerminateThread A');
  if (Terminated) then exit;
  if (not TWebSocketServer(fParent).Terminated) and (not fClosedByMe) then DoSyncClose;
 // write(#13#10, 'TWebSocketServerConnection.TerminateThread B');
//  sleep(20);
  fOnClose := nil;
  inherited;
end;

Wenn ich die write(..) rein nehme, scheint es zu verlässig zu klappen mit dem sleep(40) in CloseSocket, aber ohne die write geht es nicht.
Ich glaube inzwischen, dass der Fehler in diese Methode liegt.

Edit2: Wenn ich die write durch sleep(10); ersetzte, scheint es zu gehen...
Edit3: Ich habe es weiter getestet, nun, die Lösung ist das noch nicht. Das Problem besteht immer noch, nur nicht jedes mal.
MFG
Michael Springwald

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: WebSocket Verbindung wird scheinbar nicht geschlossen !

Beitrag von kupferstecher »

Hab dein Projekt mal runtergeladen, allerdings kann ich es nicht kompilieren, es ist keine Quellkodedatei zugeordnet, die genaue Fehlermeldung hab ich vergessen. Es waren auch keine Dateien im Projektinspektor gelistet.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: WebSocket Verbindung wird scheinbar nicht geschlossen !

Beitrag von pluto »

kupferstecher hat geschrieben: es ist keine Quellkodedatei zugeordnet, die genaue Fehlermeldung hab ich vergessen.
Ohne Fehlermeldung kann ich leider nicht feststellen, was beim Kompilieren Falsch gelaufen ist. Z.B. ob ich eine Unit vergessen habe hinzuzufügen.
Du musst eigentlich nur die *.lpi oder *.lpr öffnen.
MFG
Michael Springwald

Antworten