The Event Channel Pattern

The communication between the server and the client relies on the Event Channel pattern. The application uses two types of channels. One used for the server->client communication (ie: space event channel), and another one used for the client->server (ie: player event channel). There is only one space event channel but one player event channel for each client.

Both channels can have several subscribers, for example a map can subscribe to the space event channel or a client could subscribe to another's client player event channel and act as a spectator of the subscribed client's actions.