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.