RTC Platform Update

On February 6, 2012, in Programming, Python, by LuCuS

Update ImageRecently, I’ve received several emails asking about the status of my real-time collaboration platform project. So, I decided to  take a few minutes to address this with a quick blog post. In case you aren’t familiar with my RTC platform, you can get an  idea of it here. Basically, I am working  on building a platform that will allow others to create any type of server that involves multiple users. For example, if you  wanted to create your own chat server, you could use my platform as a starting point and would only have to write a few lines  of code to make it work. If you wanted to create a streaming HTTP server, video conferencing server, or audio chat server,  again, you would use my platform as the base foundation for your application. My platform works by allowing anyone to quickly  and easily get a multi-user server up and running in no time. Let’s take a look at another real-world example of where my  platform could be used.

Let’s pretend you’re interested in creating your own multi-player video game, but would rather focus on the actual gameplay  instead of writing code to juggle multiple users. To do that, you would implement my platform which allows you to create  “lobbies” where users can share information and data. For example, when a user first logs onto the server, they would not be in  a lobby. Instead, they could pass the “list lobbies” command which would return a list of all lobbies that are currently  registered on the server or they could issue the “join lobby” command to, well, join a lobby. If the user issues the “join  lobby” command by itself, the server will search for a lobby that has available room and will dump the user into that lobby. On  the other hand, a user could issue the “join lobby” command and pass it the name of a lobby. If the lobby the user specifies  has sufficient space, the user will be automatically dropped into that room, otherwise a “too many users exception” would be  returned. If a user passes a lobby name along with the “join lobby” command and that lobby doesn’t exist, it would be  auto-created and the user would become the “lobby leader”. Of course, the application designer could decide whether or not  users can create new lobbies or not.

Once a user joins a lobby, they can issue the “list users” command to see all of the other users within that lobby. Each user  in the lobby has a minimum of 4 channels to the server. The first channel is for text. The second channel is for audio. The  third channel is for video. And, the fourth channel is for raw data. To simplify this, a user gets 1 connection made back to  the server, but can send multiple / different data formats to the server over the same connection. It is up to the server  designer to decide which channels will be accessible to their users. Plus, by having separate channels for each data type,  channels can be turned on and off during runtime by the end user which would help with bandwidth issues.

I am designing my platform so that it’s completely asynchronous. This means that when a client sends a request to the server,  other clients don’t have to get in line and wait. Instead, they too can send server requests and get responses without the  server hanging up from things like I/O. With my platform, designers will be able to utilize my API for handling all of the  things that would normally take years for someone to design from scratch like event delegation and data-transfers.

With my platform, system designers don’t have to worry about writing the code to handle multiple users. Designers don’t have to  write code to take incoming packets from a client and redistribute them to all of the other clients within the same lobby.  Designers don’t have to worry about writing code to limit how many users can join a single lobby or how to handle different  data types such as audio, video, and text. Instead, designers can focus on the actual gameplay and can use my platform to  handle the rest.

So, as you can see from the example above, my platform will handle all of the pieces required to get up and running a  multi-user application. And, like the example above, I have already begun working with a few others for creating some  multiplayer games which will run on top of my platform. I have also already begun working on a few starter servers for things  like HTTP, FTP, real-time document collaboration, video conferencing, and tele-conferencing. I will also be providing example  client applications for each of the server types mentioned. I will try my best to provide examples in Python, Java, C#, and  PHP. I hope to have something ready to be released within the next few months. I wanted to have it ready sooner, but have found  myself adding more and more functionality before the first release will be ready. Stay tuned!

Thank you for your interest in my site. If you find the information provided on this site useful, please consider making a donation to help continue development!

PayPal will open in a new tab.

Related Posts

Tagged with:  

One Response to RTC Platform Update

  1. thedonflo says:

    This project sounds so exciting! I can’t wait till its finished.

Leave a Reply