Khoros is a simple platform for sending and receiving arbitrary data through socket.io.
The aim of Khoros is to allow for complex networked interactions without worrying about server logic.
Khoros adopts the concept of rooms from socket.io, a room simply being a collection of users. When initializing Khoros, you specify both a room to sing (broadcast) to and a room to listen to. Depending on your use case, these rooms may or may not be the same and in many cases one or the other will be null.
Many to Many
By specifying the same room for both singing and listening, you can create many-to-many experiences. Singers do not hear their own songs.
One to Many
This use case is ideal for a scenario with a performer and an audience. In the performer application, specify only room for singing. In the audience application, specify that same room for listening.
Many to One
To allow multiple users to interact with a single application, specify a singing room for the participants and have the central client application listen to only that room.
The pieces of Khoros are broken into individual repositories.
This is the main project repository for documentation and reference.
This is an example server build for heroku using the middleware below.
This is middleware for socket.io to allow for the automatic routing of events based on rooms.
This is a javascritpt implementation of Khoros, which can be served automatically by the middleware.
This is a simple implementation for Khoros for Unity along with some examples.