Abigail Brady (
abigailbrady) wrote2010-11-10 11:22 am
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
(no subject)
I finally started work on the web mud client today. This has gone better than I expected. I am able to load up a web page, type a command into a box, press a button, and then have it log in to the mud as a user, do that command, and send the result back for display in the HTML page, which displays with formatting as it would have done in a telnet.
I am declaring victory for today.
The big missing thing is that each time I do a command it logs me in and out, so we need some kind of persistent server-side process that maintains the connection. This will probably be a Comet-style hidden-IFrame thingy, so it can asynchronously send the output of other people's commands to you. The tricky bit will be synchronising this and the HTTP POSTs we'll be sending on each command - which will either involve doing a lot of HTTP server wrangling, or possibly just some backend changes to the MUD to allow transient connections to provide an auth cookie and a command, and have the output sent to them, which might be easier. Also there is the issue of ordering to consider: for the moment I might just make it not possible to execute a command until the answer for the previous command has come back, which will probably not be ideal for production use but will do.
Eventually I'll make some significant changes to the mud's output backend to make the output we can display in the browser nicer: we have an internal formatting markup that I can just dump out directly, which can provide richer information than just the ANSI escape codes (like, it knows the difference between a playername and something that happens to be in bright cyan). Also we can annotate the bits that actually need to be in >pre;< (ASCII art, tables), and then have the prose be in a proportional font. (maybe tables can end up being actual HTML tables, that sort of thing.)
But for now I just need to get the Comet bit working.
I am declaring victory for today.
The big missing thing is that each time I do a command it logs me in and out, so we need some kind of persistent server-side process that maintains the connection. This will probably be a Comet-style hidden-IFrame thingy, so it can asynchronously send the output of other people's commands to you. The tricky bit will be synchronising this and the HTTP POSTs we'll be sending on each command - which will either involve doing a lot of HTTP server wrangling, or possibly just some backend changes to the MUD to allow transient connections to provide an auth cookie and a command, and have the output sent to them, which might be easier. Also there is the issue of ordering to consider: for the moment I might just make it not possible to execute a command until the answer for the previous command has come back, which will probably not be ideal for production use but will do.
Eventually I'll make some significant changes to the mud's output backend to make the output we can display in the browser nicer: we have an internal formatting markup that I can just dump out directly, which can provide richer information than just the ANSI escape codes (like, it knows the difference between a playername and something that happens to be in bright cyan). Also we can annotate the bits that actually need to be in >pre;< (ASCII art, tables), and then have the prose be in a proportional font. (maybe tables can end up being actual HTML tables, that sort of thing.)
But for now I just need to get the Comet bit working.
no subject
I ended up doing a lot more coding since this post and got the server-side push working as well as commands. I hope to bring it to a state where I can put it up soon.