/watch (besseres /notify)
Viele moderne IRC-Netze unterstützen ein interessantes Feature: Das Watch-System. Dieses dient als besserer "Ersatz" für das in vielen IRC-Clients eingebaute Notify. Der Unterschied zu Notify besteht bei Watch darin, dass Notify auf einer polling-Methode basiert, das heisst, Notify fragt in regelmäßigen, oft kurzen Abständen beim IRC-Server nach, ob die Personen, die auf der Notify-Liste sind, auf dem Server anwesend sind.Beim Watch-System wird nur einmalig dem Server Bescheid gegeben, über wessen kommen und gehen man informiert werden will, und der Server sagt einem dann, wenn eine dieser Personen kommt oder geht. Dadurch ergeben sich folgende Vorteile durch das Watch-System:
- weniger Eigen-Traffic
Bei Notify muss der IRC-Client muss ständig beim IRC-Server nachfragen, ob die Personen anwesend sind. Je nach verwendetem IRC-Client (und Skript) gehen dabei alle 30-40 Sekunden bis zu 1 KB über die Leitung. Das ist nicht unbedingt viel, aber im Endeffekt überflüssig und wirkt sich natürlich im geringen Maße auch auf den eigenen Lag und die Geschwindigkeit von Downloads aus. Beim Watch-System werden nur dann Daten übertragen, wenn dies wirklich notwendig ist - z.B. dann, wenn eine Person kommt oder geht.
- mehr Angaben als bei Notify
Bei einer Watch-Information über das Kommen oder Gehen einer Person werden auch direkt noch der Hostname und Ident dieser Person mitübertragen, so dass man nicht mal ein /whois machen muss, um die "Echtheit" der Person evtl. feststellen zu können.
- Unmittelbare Benachrichtigung
Da das Notify nur in gewissen Abständen die Anwesenheit von Personen überprüft, kann auch nur dann eine Veränderung festgestellt und über diese benachrichigt werden - im ungünstigsten Fall also 30-40 Sekunden. Beim Watch-System weiß der Server natürlich sofort, dass eine Person gegangen oder gekommen ist - und kann die Leute, die diese Person auf ihrer Watch-Liste haben unmittelbar darüber benachrichtigen. Keine Veränderung entgeht einem :)
- Watch-Liste nimmt mehr Nicks auf
In aller Regel kann die Watch-Liste mehr Nicks aufnehmen, als dies beim Notify-System möglich ist: Beim Notify-System müssen sämtliche Nicks in eine vom IRC-Server annehmbare Zeile passen. Und so eine ist die Länge von 512 Byte beschränkt, von denen auch noch 7 Byte wegfallen. Wer viele vor allem lange Nicks auf seiner Notify-Liste hat oder haben will, wird schnell feststellen, evtl. sogar schon festgestellt haben, dass ab einer bestimmten Länge keine Benachrichtung mehr über die Nicks "am Ende der Liste" erfolgt. Das Watch-System hingegen nimmt unabhängig von der Länge des Nicks bei D-T-Net 128 Nicks auf. Dies sollte für die meisten Personen reichen.
Der einzige Nachteil des Watch-System ist lediglich die Tatsache, dass es auf "unmodernen" IRC-Netzen nicht verfügbar ist. Wer mit der Zeit geht, sollte watch benutzen - es ist einfach eleganter und informativer.
Befehle des Watch-Systems
Alle Funktionen des Watch-Systems sind über den /watch-Befehl verfügbar. Jeder der Befehle besteht im Prinzip aus einem einzelnen Zeichen bzw. Buchstaben. Dabei ist die Gross-/Kleinschreibung der Befehlsbuchstaben zu beachten. Die einzelnen Befehle im überblick:| +nick | Setzt den angegebenen Nickname auf Watch-Liste. |
| -nick | Entfernt den angegebenen Nickname von der Watch-Liste. |
| s | Zeigt alle Nicks auf der Watch-Liste im Kurzformat und eine Information darüber, wievele Nicks auf der Watch-Liste sind und auf wievielen Watch-Listen man selbst ist, an. |
| c | Löscht alle Einträge von der Watch-Liste |
| l | Listet alle Online-User auf und schickt den Away-Status |
| L | Listet alle Online- und Offline-User und deren Away-Status |
| a | Deaktiviert die Watch-Away-Meldungen |
| A | Aktiviert die Watch-Away-Meldungen |
| m | Deaktiviert das Senden einer Watch-Away-Meldung, wenn eine Person ihre Away-Meldung ändert (und schon away ist) |
| M | Aktiviert die Watch-Away-Meldung für änderungen der Away-Meldung |
| n | Deaktiviert das Senden des NotAway-Codes |
| N | Aktiviert das Senden des NotAway-Codes |
Wird kein Befehl angegeben, also einfach nur /watch ausgeführt wird dies wie /watch l gehandhabt.
Es ist problemlos möglich mehrere Befehle in einer Zeile auszuführen,
indem man diese durch Leerzeichen getrennt hintereinander schreibt.
Beispielsweise: /watch +nick1 +nick2 +nick3.
Kurzanleitung und Reply-Codes für Scripter
Wer sich selbst ein Watch-System bauen will, kann dies leicht tun: Bei (jedem) Verbinden mit dem IRC muss lediglich eine Nachricht /watch +nick1 +nick2 +nick3 +nickx an den IRC-Server geschickt werden. Der IRC-Server antwortet mit folgenden Reply-Codes und Antwort-Formaten:
Meldung, wenn ein User einen Nickname annimmt, der auf der Watch-Liste steht::servername 600 eigenes nick nick ident host logon-time :logged online
Meldung, wenn ein User, dessen Nickname auf der Watch-Liste steht, ein anderes annimmt oder den IRC verlässt:
:servername 601 eigenes nick nick ident host logon-time :logged offline
Meldung, wenn ein Nickname von der Watch-Liste entfernt wurde:
:servername 602 eigenes nick nick ident host logon-time :stopped watching
Meldung bei/watch s:
:servername 603 eigenes nick :You have Anzahl and are on Anzahl WATCH entries
Meldung, wenn bereits ein User einen Nickname hat, der gerade auf die Watch-Liste gesetzt wird oder bei /watch l oder /watch L:
:servername 604 eigenes nick nick ident host logon-time :is online
Meldung, wenn kein User den Nickname hat, der gerade auf die Watchliste hinzugefügt wird oder bei /watch L:
:servername 605 eigenes nick nick * * 0 :is offline
Diese Meldung wird bei /watch s bei der Kurzliste der Nicks geschickt:
:servername 606 eigenes nick :Nicks...
Meldung am Ende von /watch s , /watch l , /watch L :
:servername 607 eigenes nick :End of WATCH Anfrage-Code
Die Codes 600-607 sind quasi-Standard und sollten auch in dem Format in anderen Netzen mit Watch-Support sein. Die folgenden Codes sind D-T-Net-Erweiterung:
Meldung, wenn ein User, der neu auf die Watch-Liste kommt, bereits away ist::servername 608 eigenes nick nick ident host Zeitpunkt :Awaynachricht des Users
Ist Away-Watch aktiviert, folgt dieser Code auf jedes 600 und 604
Meldung, wenn ein User in diesem Moment away geht (und Away-Watch aktiviert ist):
:servername 609 eigenes nick nick ident host Zeitpunkt :Awaynachricht des Users
Meldung, wenn ein User aus dem Away-Zustand zurückkehrt (und Away-Watch aktiviert ist):
:servername 610 eigenes nick nick ident host Zeitpunkt :vorherige Awaynachricht
Meldung, wenn ein User nicht Away ist (beim Hinzufügen auf die Watch-List):
:servername 611 eigenes nick nick ident host Zeitpunkt :not awayIst Away-Watch aktiviert und dieser NotAway-Code nicht deaktiviert, folgt er auf jedes 600 und 604.
Meldung, wenn Watch-Away-Notices aktiviert oder deaktiviert werden:
:servername 612 eigenes nick Status :Watch Away-Notices
Meldung, wenn Watch-Away-Notices für Away-änderungen aktiviert oder deaktiviert werden:
:servername 613 eigenes nick Status :repeating Watch Away-Notices
Meldung, wenn der Watch-NotAway-Code aktiviert oder deaktiviert wird:
:servername 614 eigenes nick Status :Watch NotAway-Notice
Anwendungshinweise
Es könnte passieren, dass die Texte des Watch-Systems (bei 600-605, 607, 611-613) eingedeutscht werden. Die Position der aussagenden Worte (bei 603 z.B. die Anzahlen) werden dabei jedoch beibehalten. Auf keinen Fall dürfen die statischen Teile (oben nicht kursiv dargestellt) der Meldungen beachtet werden.
Welchen Sinn haben die vielen Einstellungsmöglichkeiten?
Die vielen Einstellungsmöglichkeiten haben natürlich den Sinn, das Watch-System möglichst optimal auf die eigenen Bedürfnisse konfigurieren zu können. Von dieser Möglichkeit sollte auch unbedingt gebrauch gemacht werden, da die Standardvoreinstellungen sich ändern können.
Wenn Away-Watch generell benutzt werden soll, muss dieses durch /watch A
auch explizit aktiviert werden, auch wenn es das ohnehin momentan
standardmäßig schon ist. Wird Away-Watch hingegen nicht benutzt, sollte
es auch mit /watch a deaktiviert werden.
Die Einstellung zum
Deaktivieren der Benachrichtigung einer Neusetzung der Away-Meldung
wird zur Verfügung gestellt, da leider manche IRC-Client-Scripts in
kurzen Zeitabständen die Awaymessage automatisch neusetzen (um die
Awayzeit, die sie in die Awaymessage schreiben, zu verändern) und man
entsprechend bei jeder Neusetzung benachrichtigt würde, wenn man es
nicht deaktivieren könnte. Standardmäßig ist die Benachrichtigung über
Neusetzungen dennoch aktiviert.
Der Watch-NotAway-Code ist deaktivierbar, da es auch ohne ihn möglich ist, den Away-Status eines Users herauszubekommen: Wenn nach einem Code 600 oder Code 604 keine Watch-Away-Meldung kommt, ist der User folglich nicht away, andersfalls würde Code 608 gesendet. Wenn man lediglich über das Away-Gehen und -Zurückkommen von Usern informiert werden möchte, benötigt man den Code 611 daher nicht. Am einfachsten kann soetwas in einer zweizeiligen Darstellung, beispielsweise so, erfolgen:
* User (ident@host) ist im IRC * User (ident@host) ist away: AwaynachrichtFür eine Darstellung der Form
* User (ident@host) ist im IRC und away: Awaynachrichtist diese Methode (ohne Code 611) jedoch unpraktikabel. Hier empfiehlt es sich, den Code 604 zu ignorieren, und stattdessen einfach auf die Awaymeldung oder den Not-Away-Code zu warten, da einer von beiden bei Aktiviertem Not-Away-Code erscheinen muss. Momentan ist der NotAway-Code standardmäß aktiviert, muss jedoch explizit aktiviert werden, wenn er erforderlich ist. Ebenso sollte er deaktiviert werden, wenn er nicht benötigt wird, da so auch Traffic gespart wird.
Die drei Einstellungen können gleichzeitig in einer einzelnen Befehlszeile gesetzt werden, beispielsweise durch /watch A m n oder auch mit Setzen der Watch-Liste: /watch A M N +nick1 +nick2 . Wird ein bestimmtes Serververhalten erwartet, das durch die Einstellungen festlegbar ist, müssen diese Optionen explizit gesetzt werden.


