WebSocket support? #85
Replies: 4 comments 1 reply
-
I know WrittenRealms (written by Thibaud Morel l'Horset using Python) uses websockets and provides an open implementation of his client at : https://github.com/teebes/herald Also Eric Oestrich of the ExVenture mud framework (Elixir), the grapevine inter-mud chat protocol and co-host of the [Titans of Text](titans of text) podcast would probably be a person very much interested in developing a standard and probably Thibaud as well. I think I'd probably start just creating the bare minimum web client sans all formatting just to get the ball rolling and prove out the general notion and then start thinking about encoding formatting, maybe starting with looking at what those two have done. Reaching out to them afterward would seem to be a logical next step. As project champion of wheel mud you might consider reaching out to the Titans of Text podcast peeps and maybe do an episode talking about your goals. It would probably be a good way to attract some developers to the project. There must be scads of .NET programmers (relative to Elixir programmers) who listen and might like to contribute. I think the on-boarding process to wheel mud is pretty good...you've been helpful and encouraging, the docs are good, and I think a lot of the pain points / friction have been addressed by yourself since I started poking around. Just my .02 of course but personally I like C# and would like to see a mud grow up based on the cross-platform dotnet ecosystem. |
Beta Was this translation helpful? Give feedback.
-
Yeah, I did encounter WrittenRealms recently while researching options for #46. While it didn't fit the bill for those needs, I do love the aesthetic. It is a beautiful client. It would be a fantastic first candidate to assess what it would take to hook it up such a client to a WheelMUD WebSocket for a server that accepts both Telnet and WebSockets client connections. I think we can start down this road with even less than a bare minimum web client - starting with just having a WebSocket port configurable in app.config that treats connections very much like a Telnet connection. Testing at that stage would require connecting with a tool like Telsocket to manually type commands and read responses. (I've now created #87 to track trying out this first stage.) I think from there, once we've proved that multiple-connection-modes is viable, we could look at the next steps. As you point out, I agree that phase could be exploring options like:
On PR/Promo/Recruiting fronts, yeah I'd like to do more of that stuff again at some point. Those are some good leads. I feel I haven't put enough time into this project lately for it to be a daily priority and fresh enough on my mind to excel at such recorded discussions ATM, but I would like to get there again. I also still have an administrative backlog to reduce (like restoring the rest of the old design discussions) before I can tackle that stuff guilt-free, and feel ready for a larger influx of community. For now I continue to make it a priority to help ramp all newcomers though, and will revisit how I can produce best impact here as these variables change. Thanks for the feedback! |
Beta Was this translation helpful? Give feedback.
-
This thread contains restored content from prior forums; see #134 for details. [July 2010] Beyond Telnet
I also don't feel a full-blown .NET web client (sans Telnet) should be in scope, prior to v1.1+
Interesting ideas for the future, but for now...
Actually a couple of things we can do about this, with Telnet.
Yea that setup makes sense to me (as its own command with optional parameterization) - getting fancy on the RHS of channel/communications commands is a bit awkward as people would sometimes accidentally send a message of what they thought was going to be an argument, etc. PlayerName gossips "history" ... oops! |
Beta Was this translation helpful? Give feedback.
-
This thread contains restored content from prior forums; see #134 for details. [2012] Browser GUI
I think looking into various clients that exist and seeing what kind of features we can support for targeted instances would be a good idea for the polishing phase around v1.0. Hopefully most client features like triggers don't impose technical restrictions on the server since that sort of thing usually occurs on the client side. (Something like a constant Who's Online pane may require the server to issue updates to the client amid the normal text stream but which aren't actually shown to the user as text.) Personally I wouldn't want us splitting focus on building a client itself any time before v1.1+ timeframe. Perhaps, worse, having/advertising a custom client effort as part of our feature set might harm our first impressions to devs who stop by, with possible notions of this being a proprietary client-server architecture rather than good ol' telnet-compliant server architecture? shrug
Agreed, a good embedded telnet client is a great idea for individual MUD administration teams to embrace. Hopefully at the v1 timeframe we start transitioning from being solely a MUD platform site to being more of a strong community of MUD administration teams who are using our tech, pulling and pushing advances from/to many games over time... It would be great to have forum discussions like "Here's how to embed telnet client X into your website and get the most out of it!" I'm glad you brought up the Iron Realms client. That client is called the "IRE Flash Client" by the developer (Matt) at bc-dev.net. He also made FMud - I believe they are based on the same code but I could be wrong. A couple years ago I asked Matt if there was a way to automatically pass parameters to the client for logging in the character; For example, if your MUD's website has an authenticated login itself, why not have the webpage rendering code pass some username and unique security token to the client, to automatically log in their character when they browse to that client page? Then in v0.9 he added the "name", "password", and "hide_password" parameters to FMud which should make that possible. :) The moral here is that other parties may be interested in making embedded MUD clients awesome, so hopefully we can cooperate/leverage that instead of rolling our own. [2012] Should Telnet go away?
Ed. Update: A great discussion above. Although I missed this thread at the time, I just want to add a couple things now:
Basically, I feel like Telnet is locked in as a core feature, but I am not opposed to expansion into new realms on this front! |
Beta Was this translation helpful? Give feedback.
-
I did a bit of exploration for #46 to find out how hard it would be to have an admin command open a web page for a light web-based MUD client. That route is problematic so far, but...
Fleck was a really easy to use .NET Core NuGet package for WebSockets. Test code was pretty much straight from the Fleck tutorial example, like this:
When I connected to it with Telsocket, it just worked - the "WELCOME!" which I put in to simulate giving an automatic splash screen appears. Type a thing in Telsocket, hit enter: OnMessage parrots that back to us. It's easy to compare this interaction being much like a telnet client in this form. So, imagine OnMessage just routed the line to the same command handler as Telnet connections. And when we receive data to send back, we just wrapped it appropriately for a WebSocket response, formatted for some web-based MUD client's protocol. This feels really within reason to support.
However, are there any good WebSocket MUD protocols/clients out there, that aren't proprietary? Are there any which would be easy to support as a second, raw-output-centric port, to co-house Telnet-based and Web-based players? If not, if we had to build our own light web-based interface (some day), I imagine we'd want to keep it simple, but ready for options for admins to expand on. Like adopting a JSON format for responses:
and then later if we wanted to expand on this to have a few specific renderers for specific scenarios, we could do so. Like:
which would allow the web client to build a UI around the context of the response, maybe giving clickable dropdown menus on things for quick actions, or whatever.
Anyway, WebSocket support probably wouldn't become a priority within the 1.0 timeframe (and certainly not if it means having to build our own client from scratch or even complex changes to support an existing one). But I wanted to get the idea out here for thinking and potential discussion anyway.
Beta Was this translation helpful? Give feedback.
All reactions