Hallo,
ich stehe vor einem Problem
Ich habe ein Programm geschrieben, mit dem in einem Netzwerk ca. 10 Leute arbeiten. In diesem Programm ist eine Benutzerliste mit dem Online/Offline-Status und die Möglichkeit, den Usern Nachrichten zu schreiben.
Da einige Leute auch via VPN über einen SurfStick ins Lan kommen, würde ich gerne verhindern, ständig die
MySQL-Datenbank nach Änderungen des BenutzerStati und neuen Nachrichten zu fragen.
Problem ist, dass das ganze Programm dann lahmt.
Deshalb wollte ich diese Sachen auf
TCP (IdTCPServer/Client) umstellen. Doch hier ist das Problem, dass die User nicht immer die selbe
IP haben (echte Lan-
IP, VPN-
IP mehrere Netzwerkkarten etc).
Ich brauche mal eure Entscheidungshilfe. Es geht also um
TCP-Kommunikation vs
MySQL-Polling.
Die
SQL-Abfragen könnte ich in Threads packen. Damit würde das Programm nicht mehr lahmen. Nachteil wäre, dass nervige Fehlermeldungen kommen, wenn der Server nicht erreichbar ist/wird.
TCP ist direkt, geht schnell und nur dann, wenn man es braucht. Ich würde, wenn User C online kommt, allen anderen Usern eine
TCP-Message wie "/updateOnlineUser" senden und die würden dann die Datenbank abfragen und sich die neuen Stati holen.
Nachteil hier ist die wechselnde
IP-Adresse. Dagegen habe ich gearbeitet, indem ich zu jedem User bei Programmstart in der
DB alle
IP-Adressen speichere und dann, eine nach der anderen durchgehe und schaue, welche richtig ist. Diese speicher ich dann im User-Objekt (User.IP). Doch das hin-und-her von
TCP-Messages, UpdateCommandos etc nimmt bei vielen Usern viel Zeit in Anspruch (gerade über VPN).
Ich bräuchte - wie gesagt - eure fachliche Meinung, Vor- und Nachteile oder ganz und gar andere Lösungen.
Vielen Vielen Dank im Voraus