missing messages/features: store personal data (email, website, caption etc.), get personal data, set rights for getting, set rights for viewing (mainly for email), store settings, get settings Notable differences to chatrev: There is no need to login after registering, registering always logs you in automatically (because this proved to be the biggest stumbling block for newby users). Currently you can miss messages if you ping (automatically disconnected by server), but in the future there will be a setting which would store your messages for an hour or so, incase that you'd rejoin. Due to technical reasons, the server never assumes the client to be connected, therefore, the client needs to make sure to regularly send "update" messages, otherwise it'll ping (in chatrev, the server sent a ping, to find out if a client still existed) If you send a private message to yourself, you'll be notified that you sent it, but not that you received it (in chatrev it was vice-versa) there's no special reason for this change, other then code slothing. Other Stuff: At all times "message integrity" is assumed. that means that the server for example does not check whether you're sending a message without content. If something fails completely, like sending the querry of "msg" (which does not exist), then you'll get an error back. It is not save to assume that the connection with the server still works. So if you ever get an "error" you are automatically logged out. Now's the time to analyse and fix the problem (or send me a bug report if it's a server problem), and only then login again. for readability reasons there's spaces at a lot of places, but the message will actually not contain them. example: "bvg, logout, bye suckers" is actually sent like this by the server: "bvg,logout,bye suckers" messages have a priority, and are ordered in this document by their priority. so if a client uses this query: ?updates=""&message="hi"&target="" then no message will be sent, but the client will receive updates information. (login is an exception to this, it will be handled in addition to the other message you send, as long as you are logged in already) For all messages _but_ the login or register messages to work, you need to be logged in first. This is the last entry in the message hierarchy, and special: you can always attach alogin/pass pair, to revalidate yourself (revalidation not yet implemented). If you're not logged in, then you'll get the following reply: identifier: credentials value: "You need to log in or register first" The Server will either send you nothing (currently only when you logout) or an identifier, return and then the content of the message. success: your query or action was successful. the Data will contain the Stuff you demanded, or a small messsage for example "logged in" for "login". note: mostly used with the update queries. When you query "updates", but there are none, this will be the message returned to you with the data being "no updates". credentials: Your action was blocked by the server, because you are not logged in, or because your login was wrong, or the registering of your nick failed. The data will contain an explanation as to why exactly. error: Something went unexpectedly wrong. It is not save to assume that the connection with the server still works, and you will not be logged in on the server anymore (auto logout). start of list: message: updates values: none description: --clients will want to know if there's been updates since they last querried stuff A system message for knowing what the client should query next, respectively, what updates have been made since last query for "updates" has happened. answers: identifier: server value: messages & return & users identifier: note value: "no updates" example query: http://bvg.on-rev.com/chatonrev.irev?updates example return value: note users message: messages values: none description: --gives the client back messages that it needs to see, and which came in since it last checked A message for getting all messages which you're allowed to see. It returns all messages that have happened since the clients last query for it. Note that the server decides who will get what messages. The target will not always be the current logged in nickname, and the receiver can't change that, only the sender. If the receiver is empty, that means the message was send to everybody. (currently not implemented are subchats, but using this "login <> recipient" system, it would be simple) answers: identifier: success , , , & return identifier: note values: "no message updates" example query: http://bvg.on-rev.com/chatonrev.irev?messages example return value: success 1243947510875, bvg, , hi you shellfishes 1243947413211, mark, bvg,hi bvg, this is only for you: :-P 1243947547532, bvg, bvg, oh how shellfish! i'm messaging myself! message: users values: "list", "" description: --gives a list of currently logged in users --witouth qualifier, it gives information regarding last user property changes and log-in/-outs A message for getting status data. It returns two different things, depending if the value "list" is given or not. With list, it gives you the currently logged in users, and their current caption. With an empty (or none) value, it gives a similar list to the messages, namely all changes that have happened recently regarding users (including logins/outs etc.). answers: identifier: success values: , & return identifier: success values: , , ["login" | "caption" | "about" | "email" | "website" | "logout"], & return identifier: note values: "no user updates" example query: http://bvg.on-rev.com/chatonrev.irev?users=list example return value: success bvg, I'm shellfish mark, Away for lunch: potatoes and shellfish kweed, patience, patients, shellfish example query: http://bvg.on-rev.com/chatonrev.irev?users example return value: success 1243947510875, bvg, about, i'm a filthy joiner 1243947413211, bvg, login 1243947547532, mark, caption, i like joinage! message: message, target values: , [ | ""] description: --a chat message, let's store it to the log This is an action, you're sending a message to someone, or a place (places/channels not yet implemented). Note that you can leave the target away, if you want to send a message to everyone who is logged in. Note that there is no error checking, so sending a message to a target that does not exist (no loged in user with that name) will simply not send anything. also note that the message is only received on the server, and there's no notification whether all recipients have received it yet. answers: identifier: success values: "message received" example query: http://bvg.on-rev.com/chatonrev.irev?message="hi mark"&target="mark" example return value: success message received message: disconnect value: description: --user want's to go away gracefully This is an action by the client, indicating that it left the chat. You can send a custom message. If you don't a stored message (normally your last entered one, or a quip that you never did make a custom one) will be sent. There is no answer, and you won't get anything afterwards, unless you log in again. answers: there is no answer example query: http://bvg.on-rev.com/chatonrev.irev?disconnect="goodbye, and thanks for all the shellfish" message: login, pass value: , description: --login handling, note that "theLogin" is not available for this part of the handler This is an action that you need to take, before you can do anything else. It puts you into the list of currently logged in users. If you try this with a invalid user/pass combination then you'll always get the same message, ignoring whether the user actually exists. answers: identifier: success value: "logged in" identifier: credentials" value: "This login doesn't match this password" example query: http://bvg.on-rev.com/chatonrev.irev?login=bvg&pass=myPassword example return value: credentials This login doesn't match this password message: register, pass value: , description: --creates a new login, note that "theLogin" is not available for this part of the handler This is (obviously) the only action you can take when you're not logged in (besides logging in that is). there is some error correction here, so there's lots of fail messages. answers: identifier: success value: "Registered and logged in" identifier: credential value: "That username already exists" identifier: credential value: "Empty passwords are not allowed" identifier: credential value: "Your username cannot contain comma" message: anything else value: unimportant description: --well... yeah.. uhm... huh? If you send any other message, respectively any querry that does not contain at least one of these messages, then the server will disconnect you, and try to send you a last resort message back. Try to fix your client, or send me a bug report if it's the server who's wrong. answers: identifier: error value: "Uhm... not sure what happened, but I think your software made a typo"