WebGadget als ChatEdit

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

WebGadget als ChatEdit

Beitrag 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]
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: WebGadget als ChatEdit

Beitrag 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"?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Insolite Enuntriatissen exagerieren die Kommunikationsabilität
bei exstarierter Kommunikationsultrizität oder gar deren
Laszivität.

so what ?



ich lach mich schlapp :mrgreen:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

"nur irc protokoll" ist ein bischen dünne im zeitalter der extrem multiprotokollfähigen IMsen

aber egal
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten