Avatar billede elv Nybegynder
16. juni 2001 - 20:24 Der er 4 kommentarer og
2 løsninger

Server Timeout

Vi er nogle stykker der er ved at lave en chat. Den har indtil videre været lavet i asp, men vi er nu ved at lave den om til java. Tidligere kunne vi kigge efter timeout ved at kommunikere med serveren og se om der er kommunikation med clienten. Efter at have lavet den om til java via et par URLConnections opfatter serveren dog ikke at der bliver opdateret. Er det fordi Internet Explorer sender en speciel kommando til serveren, og hvordan kan jeg få serveren til at opfatte at der bliver arbejdet på den fra clienterne? Når jeg reconnecter til serveren gør jeg sådan:

String URLString = Link til asp side
Display = en TextArea

try {
  URLConnection uc = urlString1.openConnection();
  BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
}
catch (Exception e){
  display.append(\"Fejl i reConnect()\");
}

Dette er selvfølgelig en forenklet udgave af koden, men det er her der skal sendes en SÅ-FAT-DOG-AT-JEG-HENTER-FRA-DIG-DIN-DUMME-SERVER besked...

MVH Elv
Avatar billede elv Nybegynder
16. juni 2001 - 20:25 #1
PS: koden er sikkert fyldt med fejl, da det bare er et eksempel...
Avatar billede elv Nybegynder
16. juni 2001 - 20:28 #2
PPS: Det er selvfølgelig for at forhindre serveren i at lave timeout på de forskellige ASP sessions.....
Avatar billede lbhansen Nybegynder
17. juni 2001 - 17:25 #3
Det i lige præcis vil lave er ikke sådan lige at lave i java. ASP bruger session cookies for at holde styr på session, og URLConnection understøtter ikke som sådan brug af cookies.
Avatar billede elster Nybegynder
18. juni 2001 - 13:38 #4
Jeg ved at man ved requests med URLConnection uden problemer kan gemme information i ASP session cookies.

F.eks. kan man ved sit første request med URLConnection gemme noget information i en session cookie der f.eks. er hentet fra query string, som nedenstående:

<%
noget = request(\"noget_i_query_string\")
Session(\"noget_i_session\") = noget
%>

Ved efterfølgende requests med URLConnection vil det ovenstående gemte information stadig ligge i Session(\"noget_i_session\").

Så at Session_OnEnd i global.asa (jeg går ud fra at dette er problemet) ikke bliver kaldt når en session timer ud, lyder lidt besynderligt.

Måske skulle du ved dit første request prøve at ligge et eller andet i en session cookie bare for at være sikker på at der startes en session, f.eks.:

<% Session(\"SessionStart\") = Now %>

Java koden er der ikke noget i vejen med, ud over at det er en god idé at kalde setDefaultUseCaches(false), for at være sikker på at du får et friskt svar fra serveren hver gang du reconnecter, f.eks:

URLConnection uc = url.openConnection();
uc.setDefaultUseCaches(false);
BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));


Avatar billede logical Nybegynder
19. juni 2001 - 20:04 #5
du skal selv gemme din session cookie, hvis din server skal genkende det.

Følgende virker: (kør evt. bare op mod serveren. Den skriver om den genkender brugeren)

String URLString = \"http://www.javaekspert.dk/demo/session.jsp\";
String line;
String cookie = null;
for (int i = 0 ; i < 2; i++) {
  URL urlString1 = new URL(URLString);
  try {
    URLConnection uc = urlString1.openConnection();
    if (cookie != null)
      uc.setRequestProperty(\"Cookie\", cookie);
        cookie = uc.getHeaderField(\"Set-Cookie\");
      BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
      while ((line = reader.readLine()) != null){
          System.out.println(line);
      }
    }
    catch (Exception e){
    System.err.println(\"Fejl i reConnect()\");
    }
}
Avatar billede elv Nybegynder
22. juli 2001 - 23:08 #6
Ingen af tingene virkede ordentligt, men efter at have lavet nogle justeringer fik jeg det til at køre. Jeg overførte de parametre jeg skulle bruge gennem javascript, så kørte det. Ellers tak for ideerne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester