| 1 |
MONITOR - Protocol for notification of when clients become online/offline |
| 2 |
Lee Hardy <lee -at- leeh.co.uk> |
| 3 |
------------------------------------------------------------------------- |
| 4 |
|
| 5 |
Currently, ISON requests by clients use a large amount of bandwidth. It is |
| 6 |
expected that it is more efficient for this to be done by the server at the |
| 7 |
expense of cpu cycles. The WATCH implementation that was designed to counter |
| 8 |
this is (in my opinion) severely flawed. This protocol was designed to |
| 9 |
provide a cleaner implementation. |
| 10 |
|
| 11 |
The command used throughout this specification is "MONITOR". |
| 12 |
|
| 13 |
Each use of the MONITOR command takes a special modifier, indicating |
| 14 |
the operation being performed. The client MUST NOT attempt to specify |
| 15 |
more than one modifier. Only one special modifier may be used per MONITOR |
| 16 |
command. |
| 17 |
|
| 18 |
Thus it is impossible to combine additions to the list with removals from |
| 19 |
the list -- these MUST be done with two seperate commands. |
| 20 |
|
| 21 |
A client MUST NOT issue the MONITOR command more than once per second. |
| 22 |
Any attempts to do so will generate an error. |
| 23 |
|
| 24 |
In commands and numerics where multiple nicknames may occur, the length of |
| 25 |
the nickname list is limited only by the buffer size of 512 chars, as |
| 26 |
defined in RFC1459. |
| 27 |
|
| 28 |
Support of this specification is indicated by the MONITOR token in |
| 29 |
RPL_ISUPPORT (005). This token takes an optional parameter, of the maximum |
| 30 |
amount of nicknames a client may have in their monitor list. If no |
| 31 |
parameter is specified, there is no limit. A typical token would be: |
| 32 |
MONITOR=100 |
| 33 |
|
| 34 |
MONITOR + nick[,nick2]* |
| 35 |
----------------------- |
| 36 |
Adds the given list of nicknames to the list of nicknames being monitored. |
| 37 |
|
| 38 |
If any of the nicknames being added are online, the server will generate |
| 39 |
RPL_MONONLINE numerics listing those nicknames that are online. |
| 40 |
|
| 41 |
If any of the nicknames being added are offline, the server will generate |
| 42 |
RPL_MONOFFLINE numerics listing those nicknames that are offline. |
| 43 |
|
| 44 |
MONITOR - nick[,nick2]* |
| 45 |
----------------------- |
| 46 |
Removes the given list of nicknames from the list of nicknames being |
| 47 |
monitored. No output will be returned for use of this command. |
| 48 |
|
| 49 |
MONITOR C |
| 50 |
--------- |
| 51 |
Clears the list of nicknames being monitored. No output will be returned |
| 52 |
for use of this command. |
| 53 |
|
| 54 |
MONITOR L |
| 55 |
--------- |
| 56 |
Outputs the current list of nicknames being monitored. All output will use |
| 57 |
RPL_MONLIST, and the output will be terminated with RPL_ENDOFMONLIST |
| 58 |
|
| 59 |
MONITOR S |
| 60 |
--------- |
| 61 |
Outputs for each nickname in the list being monitored, whether the client is |
| 62 |
online or offline. All nicks that are online will be sent using |
| 63 |
RPL_MONONLINE, all nicks that are offline will be sent using RPL_MONOFFLINE. |
| 64 |
|
| 65 |
|
| 66 |
Numeric replies |
| 67 |
--------------- |
| 68 |
|
| 69 |
730 - RPL_MONONLINE |
| 70 |
------------------- |
| 71 |
:<server> 730 <nick> :nick!user@host[,nick!user@host]* |
| 72 |
|
| 73 |
This numeric is used to indicate to a client that either a nickname has just |
| 74 |
become online, or that a nickname they have added to their monitor list is |
| 75 |
online. |
| 76 |
|
| 77 |
The server may send "*" instead of the target nick (<nick>). (This makes it |
| 78 |
possible to send the exact same message to all clients monitoring a certain |
| 79 |
nick.) |
| 80 |
|
| 81 |
731 - RPL_MONOFFLINE |
| 82 |
-------------------- |
| 83 |
:<server> 731 <nick> :nick[,nick1]* |
| 84 |
|
| 85 |
This numeric is used to indicate to a client that either a nickname has just |
| 86 |
left the irc network, or that a nickname they have added to their monitor |
| 87 |
list is offline. |
| 88 |
|
| 89 |
The argument is a chained list of nicknames that are offline. |
| 90 |
|
| 91 |
As with 730 the server may send "*" instead of the target nick. |
| 92 |
|
| 93 |
732 - RPL_MONLIST |
| 94 |
----------------- |
| 95 |
:<server> 732 <nick> :nick[,nick1]* |
| 96 |
|
| 97 |
This numeric is used to indicate to a client the list of nicknames they have |
| 98 |
in their monitor list. |
| 99 |
|
| 100 |
733 - RPL_ENDOFMONLIST |
| 101 |
------------------------ |
| 102 |
:<server> 733 <nick> :End of MONITOR list |
| 103 |
|
| 104 |
This numeric is used to indicate to a client the end of a monitor list. |
| 105 |
|
| 106 |
734 - ERR_MONLISTFULL |
| 107 |
--------------------- |
| 108 |
:<server> 734 <nick> <limit> <nicks> :Monitor list is full. |
| 109 |
|
| 110 |
This numeric is used to indicate to a client that their monitor list is |
| 111 |
full, so the command failed. The <limit> parameter is the maximum number of |
| 112 |
nicknames a client may have in their list, the <nicks> parameter is the list |
| 113 |
of nicknames, as the client sent them, that cannot be added. |