Problem bei privaten Dialogfenstern

dillen

Grünschnabel
Hallo Leute,

habe einen Chat programmiert, der die Ausgabe per HTML-Stream macht. Nun bin ich dabei private Dialogfenster zu realisieren. Das öffnen der Dialogfenster klappt auch wunderbar, ich kann auch darin schreiben, nur beim gegenüber lädt das fenster ohne Unterbrechung, desweiteren kann er zwar lesen was ich schreibe, doch er kann nicht im privaten Dialog schreiben, ebenfalls kann er in diesem Moment auch im Main (Hauptchat) nicht mehr schreiben, erst wieder wenn er das private Dialogfenster zumacht.

Für die privaten Dialogfenster werden vom Server her jeweils ein neuer Stream erzeugt und die Verbindung mitsamt den Userdaten in einer Hashtabelle abgelegt. auf diese Daten greift der Server bei eingehender Nachricht für den privat Dialog zu und ermittelt dann intern den Gesprächspartner um diesem dann die Nachricht zukommen zu lassen.

Hat jemand evtl. eine Idee wie ich das Problem lösen könnte?
 
also bei solchen Sachen wäre die Textstelle, der Quellcode hilfreich. Poste doch bitte mal ein bisschen von dem Quelltext damit wir dir helfen können.

Und im vorraus. Bitte nimm [.CODE] [./CODE] Tags.

Mfg Chimaira
 
Auszug aus der entsprechenden Klasse:

Code:
public synchronized void run()
{
	try
	{
        	boolean flag = true;
            	ps = new PrintStream(socket.getOutputStream());
            	bout = new BufferedOutputStream(socket.getOutputStream());
            	isr = new InputStreamReader(socket.getInputStream());
            	br = new BufferedReader(isr, 1);
            	String data = null;
            	String getString = "";
   		if((data = br.readLine())!=null)
   		{
      		        if(data.startsWith("GET "))
      			{
				if(data.startsWith("GET /cpchat?privid="))
				{
   					PrivatChat(data.substring("GET /cpchat?".length(),data.indexOf(" HTTP/")));
      				}else
      				{
      					_print(NotAuthorized);
      				}
      			}else
      			if(data.startsWith("POST "))
      			{
            			int len = 0;
            			while(!(data = br.readLine()).equals("") && br != null)
            				if(data.toLowerCase().startsWith("content-length: "))
            					len = Integer.parseInt(data.substring(16, data.length()));
            			data = "";
            			for(int i = 1; i <= len; i++)
            				data += (char)br.read();
        			if(data != null)
        			{
       					Input(data, socket);
            			}
      			}else
      			{
      				_print(NotAuthorized);
      			}
       		}
        	socket = null;
        	server = null;
        	ps = null;
        	br = null;
    	}catch(Exception e)
    	{
    		server.printErrors(e);
    	}
}


private synchronized void PrivatChat(String requestString) throws Exception
{
	/***
        Diverse Werte werden hier ermittelt und gespeichert
        ***/
        server.printPrivateHTTP(ps, privuser);
	privuser.setPrintStream(ps);
	privuser.setClientSocket(socket);
	server.addPrivUser(privuser, this);
}

Auszug aus der Server-Klasse:

Code:
public void printPrivateHTTP(PrintStream printstream, PrivateUser privuser) throws Exception
{
       	String name = privuser.getName();
       	String privid = privuser.getPrivID();
        printstream.print("HTTP/1.1 200 OK\r\n");
        printstream.print("Date: " + new Date() + "\r\n");
        printstream.print("Server: "+ChatName+" v"+ChatVersion+"\r\n");
        printstream.println("Content-Type: text/html\r\n");
        String chatfenster = (String)config.hash.get("privchatfenster");
        printstream.println(chatfenster);
        printstream.println("<font size=\"2\">");
        printstream.println("Dialog mit "+getPrivateChatPartner(privid, name)+":<br>");
}
 
Zuletzt bearbeitet:
Zurück