Willkommen Gast. Bitte einloggen oder registrieren.
Übersicht Hilfe Suche Einloggen Registrieren

+  BrettspielWelt
|-+  Technische Fragen
| |-+  Feature-Requests (Moderatoren: poschdi, Lysiana, Ulkomaalainen)
| | |-+  Neuer Befehl: /reconnect,
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Neuer Befehl: /reconnect,  (Gelesen 146 mal)
Mahjong
BSW-Admin
*****
Geschlecht: Männlich
Beiträge: 712


151244797 Mahjong+KA
Profil anzeigen WWW
« am: 24.07.2002, 03:39:18 »

Hallo,

leider passiert es mir häufig, dass ich während eines Spieles "fliege" (die Verbindung zum Server bricht ab).

Dann muss ich den Client neu starten, mich einloggen (geht ja inzwischen mit einem Klick), und meine Mitspieler suchen.

Wäre schön, wenn es einen Befehl /reconnect gäbe, der eine neue Verbindung zum BSW-Server aufbaut (natürlich nur, wenn momentan keine Verbindung besteht), und ich dann gleich in dem Raum bleibe, wo ich bin.

Noch besser wäre ein Thread im Hintergrund, der überprüft, ob ich noch Verbunden bin, und gegebenenfalls automatisch wieder eine Verbindung herstellt (Keep-Alive).
Gespeichert

"Handle immer nur nach derjenigen Maxime, durch die Du zugleich wollen kannst, daß sie allgemeines Gesetz wird." (Kant)
Act only on the maxim that can at the same time be willed to become a universal law. (Kant)
Was du nicht willst, dass man's dir tut, das füg auch keinem andern zu." (Sprichwort)
Do unto others as you would have others do unto you. (proverb)
601Markus
Zaubergeselle
***
Geschlecht: Männlich
Beiträge: 182


Buerger von Andoria-Geb.Deutscher-war 11 Jahre in Belgien-seit August 2001 in den USA.Reise viel-nimm mir einfach die Zeit zum Spielen.PR war mein grosser Favorit, San Juan, St. Petersburg usw, werden sicher meine Lieblingsspiele werden.


Profil anzeigen WWW
« Antworten #1 am: 02.08.2002, 08:21:33 »

Zitat
Hi zenon,

bei uns Zuhause legt der router auch nach einigen sekunden auf, wenn kein Packet mehr drüber geht.
Wir starten dann immer einen ping auf eine Hostadresse die der router kennt.
Du kannst Dich aber auch in einen Raum stellen wo viele Leute sind die viel chatten und spielen, dann erhählts Du aufjeden Falls mehr und öfter packets als wenn Du alleine in einem Raum bist.

Ganz früher pingte der Server automatisch alle eingeloggten User ständig an. Wegen steigender Traffickosten bei immer wachsender Userzahl mussten wir diesen aber wieder rausnehmen.

Seit dem muss man notfalls selbst einen ping starten....




@miezeke  Gilt das noch immer, oder kann der Ping wieder rein?

@ARMistice, koennte man den Clienten so programmieren das er selbst in einstellbaren intervallen den Server anpingt?
Gespeichert

Markus Stolle von und zu Andoria (/room C38) Kommt doch mal auf ein Spiel vorbei...
Mahjong
BSW-Admin
*****
Geschlecht: Männlich
Beiträge: 712


151244797 Mahjong+KA
Profil anzeigen WWW
« Antworten #2 am: 02.08.2002, 23:35:14 »

Hallo,

vielen dank für den Link, 601Markus.

Wenn man den Ping-Mechanismus folgendermaßen implementiert, sollte eigentlich nicht mehr Traffic entstehen, als durch unnötiges yellen Grin:

1. Das Pingen ist Standardmässig abgestellt, kann aber von Jedem (evtl. nur Clientbenutzern??) aktiviert werden.

2. Wenn der Ping-Mechanismus aktiviert ist, pingt er nicht andauernd, vielmehr überprüft der Hintegrund-Thread, wann zum letzten Mal Daten vom Server kamen. Liegt dies mehr als x Sekunden zurück, dann wird gepingt.

3. Daneben sollte der Thread überprüfen, ob überhaupt noch eine Verbindung zum Server besteht (Könnte ja sein, dass der Server zwar jetzt erreichbar ist, aber die Verbindung vorher bereits unterbrochen wurde).

4. Wenn keine Verbindung mehr besteht, bzw. der Server nicht reagiert, wird eine neue Verbindung hergestellt, wobei der Benutzer am Besten wieder da landet, wo er vorher war.




Das ganze läßt sich natürlich auch ähnlich auf der Serverseite implementieren:

Ich nehme dazu mal an, dass jeder Benutzer seinen eigenen Server-Thread bekommt:

1. Der Server-Thread speichert die Ankunftszeit des letzten Packetes seines Clients, und pingt diesen an, falls x Sekunden vergangen sind.

2. Kommt nach Y Sekunden keine Antwort, bezw. besteht keine Verbindung mehr mit dem Client, so wird der Spieler aus der BSW entfernt, und der Server-Thread beendet. (Hier muss man, je nachdem wie Puppets implementiert sind, noch darauf achten, ob Spieler oder Puppet)

Sollte nicht jeder Spieler seinen eigenen Server-Thread bekommen, dann muss man eben eine Liste anlegen (bzw. eine evtl. Vorhandene Benutzerliste ergänzen), in der jedem Benutzer die Zeit zugeordnet wird, wann zum letzten Mal ein Packet von ihm ankam.



Das ist jetzt zwar etwas aufwändig, spart aber eine Menge Traffic.


Mahjong
« Letzte Änderung: 02.08.2002, 23:51:01 von Mahjong » Gespeichert

"Handle immer nur nach derjenigen Maxime, durch die Du zugleich wollen kannst, daß sie allgemeines Gesetz wird." (Kant)
Act only on the maxim that can at the same time be willed to become a universal law. (Kant)
Was du nicht willst, dass man's dir tut, das füg auch keinem andern zu." (Sprichwort)
Do unto others as you would have others do unto you. (proverb)
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines
SMFAds for Free Forums
Prüfe XHTML 1.0 Prüfe CSS