The server itself should be based on a common infra-structure like the one present in frameworks like node.js that should abstract the socket connection layer (select layer) on an event driven basis. The infra-structure itself should be nonblocking and asyncronous for performance and saclability.

The API layer should be provided by a simple WSGI application implemented using the Appier Framework to keep things simple and fast.

For persistence the pushi infra-structure uses the MongoDB database infra-structure to avoid any unwanted complexities and provide fast performance.

Channels that provide extra information on the situation on the channel, for instance allow the identification of a set of connection using a single user_id tag. Using this approach it's possible to know when a new user connects to a channel and when one disconnects (no more connections with the same user_id are present). These channels are considered private and so are subject to validation from the server side.

This channels provide the capability to aggregate a series of (personal) subscriptions into a single channel (for simplicity). This way it's easy to agregate a stream of notifications that arise from a group of channels. This channel must be used together with the publish subscribe model. A channel of this type should be named personal-<user_id>.

Targeted at chat environment allows for the creation of automatic channels for the various elements (users) that are subscribed to a peer channel. The activation of the automatic peer channel configuration is archieved using the peer flag in the channel_data structure uppon the subscription of such channel. This channel type should not be created directly but instead should be created through presence channels.

The management of these kind of channels implies that the peer advertisement flag is set for a channel shared ummong the peers, from that moment the peer is visible to all the other peers uppon subscription of that shared channel. These kind of channels should be used together with the presence channels.

The naming of these kind of channels will always follow the structure peer-base_channel:user_1&user_2&user_3.