Browsergame - wie leistungsstark muss der server sein?

das wollte ich zuerst auch so machen. Doch leider ist die Geschwindigkeit einfach zu langsam, wenn ich das Ganze über eine Datenbank laufen lasse. Also nicht mal annähernd Echtzeit.
So brauche ich im Prinzip einen Server, der durchgehend läuft und immer die aktuellen Ereignisse (z.B. Gegner greift an) an den Gegenspiel "weiterleitet"
einen solchen Server zu programmieren ist auch kein großes Problem, ich scheitere nur daran, dieses Programm dann auf dem Tomcat-Server auszuführen
 
Mein Problem ist ja nicht das Speichern von Daten, die Daten müssen ja nur an den entsprechenden Gegenspieler weitergeleitet werden.
Mein aktuelles Problem ist es, ein servlet auf einem Tomcat-Server auszuführen, sodass es dauerhaft läuft.
Dieses servlet leitet dann einfach die Informationen an den Gegner weiter, ohne sie voher zwischenzuspeichern.
Mit Hilfe von XMLSockets kann der Server auch direkt Informationen an einen clienten schicken, ohne dass der client vorher eine Anfrage schicken muss.
Damit sollte das Ganze umsetzbar sein.
 
ich scheitere nur daran, dieses Programm dann auf dem Tomcat-Server auszuführen
Du weist, was ein Servlet ist?
- Du schreibst ein Klasse, die das Interface "Servlet" implementiert.
- Du trägst diese Klasse in web.xml ein:
Code:
<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>de.mydomian.MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
- Jetzt startet Tomcat dein Servlet; als erstes wird die Methode "init(...)" aufgerufen.
- Es fehlt noch das Servlet-Mapping für die Anfragen der Clients.

Ist doch nicht so schwer?
 
achso, ich glaube ich weiß warum mein servlet nicht läuft
in diesem Tutorial: klick wird beschrieben, wie man über XMLSockets eine Verbindung zwischen Java und Flash herstellt.
Der Java-Server der als Beispiel dabei ist, implementiert nicht das Servlet-Interface
hier ist der Quellcode vom Java-Server:
Code:
import java.net.*;
import java.io.*;

public class echoServer {
 public static void main (String args[]) throws IOException {

  ServerSocket mySocketServer = new ServerSocket(2001);
  Socket mySocket = mySocketServer.accept();
  mySocketServer.close();   

  InputStream in = mySocket.getInputStream();
  OutputStream out = mySocket.getOutputStream();
    
  byte buffer[] = new byte[1];
  int i;

  do
  {
    i = in.read(buffer, 0, 1);
    if (i>-1) out.write(buffer, 0, 1);
  } while(i>-1);

  in.close();
  out.close();
  mySocket.close();
 }
}
wie lässt sich so ein servlet auf dem Tomcat-Server ausführen?
 
Das ist kein Servlet sondern ein eigenständiges Programm:rolleyes:. Servlets laufen nie "dauerhaft", sie haben einen fest vorgeschriebenen Lebenszyklus. Wenn du eigene Sockets benutzt bekommen deine Nutzer Probleme wenn sie hinter Firewalls oder Proxies sitzen.
Überleg dir Ob du nicht doch lieber klasische Servlets mit Comet (programming - Wikipedia, the free encyclopedia) (bzw entsprechende Techniken für allgemeine "xml over HTTP" Downloads) kombinieren willst.
 
Last edited by a moderator:
Ich verstehe auch nicht, warum das hier langsamer sein sollte...:

User1 macht eine Eingabe, Request an Server ->
Server nimmt Daten an, berrechnet, sendet Ergebnisse etc. an User2 und an User1 (somit nahezu paralleler Stand beider User), Ergebnisse in Datenbank zwischenspeichern ->
User2 hat nun weitere Möglichkeiten, sendet Beispielsweise nach 3 Sekundeneinen weiteren Request ->
Server holt benötigte Daten aus der Datenbank, berrechnet, sendet gleichzeitig an User1 und User2

usw.

Und wenn es um schnelle Reaktion geht, kann man ja auch zuerst im Skript in der Datenbank die Uhrezeit des Angriffs speichern und falls der andere User auch gerade etwas macht, abgleichen wer zuerst dran war.

Ich frage mich, wie du das schneller machen willst. Das Problem, das etwas über das Internet senden Zeit verbraucht, wirst du nie beseitigen können.
 
Back
Top