And if it's excessively complicated .. then yes, it is lol
Code would be 1/4 the size and 1/10 as complicated if it weren't for edge cases and security!
But the chat looks good!
I've been considering doing a chat client for a while. Here are my wants:
- Able to be self hosted, which means it can also be hosted in the cloud. - Messaging engine and data store is completely isolated from the interface so multiple interfaces can be developed for the same messaging engine and data store. - Multiple message "worlds", each with their own groups, permissions, users, etc., but all can be active at the same time (sort of like Discord, but unlike AltME where only one world can be active at a time per instance of the AltME client).
So, 1. This is self hosted, on a google compute cloud instance, 2. we now have both console and web clients ( I can post from google chrome ) 3. that's easy enough as well.
the data is currently just stored in rebol objects on the file system at present because how it's stored is less important in the short term.
The browser interface downloads all messages locally and serves those so it acts as a proxy for the cloud server
So, there's a bit of a lag from posting to seeing your message but that just needs tweeking
Now, I'm going to look at adding rebol Wasm to the browser client so I can do more complex things in rebol rather than having to learn JS!
The multiple worlds scenario .. i'd imagine would just be separate tabs in the browser
Each connecting to a different cloud instance
I also have it so that if your message starts with a >> it gets sent to a rebol eval instance and the result is posted instead