Seite 1 von 1

WebGadget als ChatEdit

Verfasst: 23.03.2007 05:05
von Nero
Hiho,

Hm also ich will mir aktuell einen kleinen IRC Clienten schreiben um mir besser meine Fansubs zu leechen können. :mrgreen:
Naja und da hab ich mir heute Gedanken darüber gemacht wie ich am
besten das Chatfenster mache da ja ein EditorGadget eher unflexibel ist und da kam mir der Gedanke es mit dem WebGadget zu machen.
Allerdings hat dieses ja auch nicht allzu viele Möglichkeiten direkt darauf zu zu greifen und es mit Daten zu füttern und immer meine Daten bei jeder ankommenden Message in
eine Datei zu schreiben diese dann immer im Gadget nachzuladen war mir auch nicht recht :lol:
vor allem hätte es Unterumständen dann geflackert und der ständige Zugriff auf die HD
ist ja auch nicht so toll.
Von daher bin ich einen etwas anderen weg gegangen dank Ajax funktioniert das auch echt super.
Ich hab einfach einen kleinen Server erstellt der die Daten immer ans WebGadget weiterreicht
Das WebGadget selbst läd eine kleine HTML Seite mit ein bisl JavaScript welches dann im
Hintergrund alle 100ms die Daten vom Server holt.
Ob das nun besser ist als es direkt immer in eine Datei zuschreiben und diese vom Gadget neu
laden zu lassen sei dahingestell. :)

Hier mal das test Progie falls jemand Interesse hat. (ohne IRC...)

Code: Alles auswählen

InitNetwork() 

#Server = 0
Global Client.l 
Global EOL$ = Chr(13) + Chr(10)


Global ContentSize.l = 35
Global ContentData$ = ""


Procedure openServer()
  Server.l = CreateNetworkServer(#Server, 12345)
  If Server = 0
    MessageRequester("Fehler", "Netzwerkverbindung konnte nicht geöffnet werden!")
    End
  EndIf
EndProcedure

Procedure closeServer()
   CloseNetworkServer(#Server)
EndProcedure

Procedure sendData()
  
  If ContentData$ <> ""
     ContentSize + Len(ContentData$) 
  EndIf
    
  header$ = "HTTP/1.1 200 OK" + EOL$
  header$ + "Server: Chat Test" + EOL$
  header$ + "Content-Length: " + Str(ContentSize) + EOL$
  header$ + "Content-Language: de" + EOL$
  header$ + "Content-Type: text/html" + EOL$
  header$ + "Cache-Control: no-cache, must-revalidate" + EOL$
  header$ + "Pragma: no-cache" + EOL$ 
  header$ + "Connection: close" + EOL$ + EOL$ 
  header$ + "<?xml version='1.0' ?><ROOT>"

  ContentSize = 35

 *buffer = AllocateMemory(Len(header$))
  PokeS(*buffer, header$ , Len(header$))   
  
  SendNetworkData(Client, *buffer, Len(header$)) 
  FreeMemory(*buffer)
  
  If ContentData$ <> ""
    
    *buffer = AllocateMemory(Len(ContentData$))
     PokeS(*buffer, ContentData$ , Len(ContentData$))   
   
     SendNetworkData(Client, *buffer, Len(ContentData$)) 
     FreeMemory(*buffer)  
     
     ContentData$ = ""   
  EndIf  
  
  last$ = "</ROOT>"
 *buffer = AllocateMemory(Len(last$))
  PokeS(*buffer, last$ , Len(last$))   
   
  SendNetworkData(Client, *buffer, Len(last$)) 
  FreeMemory(*buffer)    
  
EndProcedure

openServer()


Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Web_0
  #Message
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 430, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      WebGadget(#Web_0, 0, 0, 600, 400, GetCurrentDirectory() + "chat.htm")
      StringGadget(#Message, 0, 400, 600, 30, "")      
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
  
  If NetworkServerEvent() = #PB_NetworkEvent_Connect
    Client = EventClient()     
    sendData()    
  EndIf
  
  Event    = WindowEvent()  
  GadgetID = EventGadget() 
  
  If Event = #WM_KEYUP  
    If EventwParam() = #VK_RETURN And GetGadgetText(#Message) <> ""
     
          ContentData$ +  "<div>" + ReplaceString(ReplaceString(GetGadgetText(#Message), Chr(60), "&lt"), Chr(63), "&gt") + "</div>"
                       
     SetGadgetText(#Message, "") 
    EndIf
  EndIf
      
  If Event = #PB_Event_CloseWindow
    closeServer()
    Break;  
  EndIf
  
  Delay(1)
ForEver 

End
;

und hier noch die chat.htm die muß im selben verzeichnis liegen
Die hier funktioniert aber nur unter Windows.

Code: Alles auswählen

<html>
<head>
<title>Chat Test</title>
<script type="text/Javascript">
<!--
var http = false;
var msg = "";

function sendRequest() 
{ 
      http = new ActiveXObject("Microsoft.XMLHTTP");  
      if(http.overrideMimeType) 
      {
        http.overrideMimeType('text/xml');
      }
      http.open("GET", "http://127.0.0.1:12345", true);
      http.onreadystatechange = handleResponse;
      http.send(null); 
}   
        
function handleResponse() 
{
  if(http.readyState == 4)
  {    
    if (http.responseText != "") 
    {
       msg += http.responseText;       
       scroll(1,9999999999)    
    }      
    document.getElementById('messages').innerHTML = msg;
    
    //countdown();
  }   
}
setInterval("sendRequest()",100);
//-->
</script>
</head><body>
<div id="messages"></div>
</body>
[/code]

Verfasst: 23.03.2007 14:05
von bobobo
als Idee gar nicht so übel :allright:


aber eigentlich sind das Pabsteier :mrgreen:

Als gäb es nicht schon Miranda, Trillian, und Co

und da flackert auch nix

Re: WebGadget als ChatEdit

Verfasst: 23.03.2007 14:42
von Kaeru Gaman
Nero hat geschrieben:... um mir besser meine Fansubs zu leechen können.
PUIT? :freak:

Leech is'n Blutegel.

warum sagstes nich wenigstens in deutscher umgangssprache "saugen",
wenn du schon zu faul bist für "runterladen" oder wenigstens "download"?

Verfasst: 23.03.2007 14:53
von bobobo
Insolite Enuntriatissen exagerieren die Kommunikationsabilität
bei exstarierter Kommunikationsultrizität oder gar deren
Laszivität.

so what ?



ich lach mich schlapp :mrgreen:

Verfasst: 23.03.2007 15:28
von Nero
@bobobo
Mein Favorit ist da HydraIRC :mrgreen:

@Kaeru Gaman
Blutegel trift so ziemlich genau den punkt :roll:

Das Tool soll sich später in einen IRC Chat einloggen und anfangen die
in einer liste angegebenen Dateien zu laden.
Beim Login wird nur kurz ne automatische Begrüßung gepostet.
Das hier ist nur dafür gedacht wen man doch mal was zu sagen hat und in
den Chanels auch schreiben kann

Verfasst: 23.03.2007 19:20
von bobobo
"nur irc protokoll" ist ein bischen dünne im zeitalter der extrem multiprotokollfähigen IMsen

aber egal