Social Web is a two-part (mobile & server) feed reader app, with group chats that are powered by two-way RSS feeds. In this model, each user has their own server app and the servers connect to each other using RSS and a new RSS extension.

The group chat works by connecting each friend’s server app to the group chat host’s server. Data is only stored on the host’s server. Friends can add and remove messages by sending data from their server to the host’s server.
The format of the data sent between the server apps is a Web content syndication format called RSS. Its name is an acronym for Really Simple Syndication, RSS is a dialect of XML. MetaWebLog, a standard format for creating posts, is used for sending data upstream to the host.
An RSS feed may contain new elements if those elements are defined in a namespace. I defined a new namespace (here: https://rss.ag/rss-groupchat-extension/ ) and created some elements to enable group chat functions.
The new group chat RSS item-level attributes that I defined are named title, url and id. The title attribute contains data that is the human-readable name for the conversation. The url attribute contains a link that acts as the target for MetaWebLog API requests (more on that later). The id is a unique id that identifies the conversation on the group chat host’s server app.

Each friend’s server app connects to the group chat host server and reads RSS feeds, which include the group chat details. The host server “knows” the identity of each user who is connecting to the server because each friend uses a unique key in the RSS feed URL that they use.
To send a message to a group chat, the friend’s server app uses the group chat details that were found in the RSS data of the group chat. The format of the data being sent back upstream to the host server is MetaWebLog (newPost and deletePost methods). MetaWebLog is an API that allows external programs to get and set the text and attributes of blog posts.
The MetaWebLog newPost method has an optional category attribute. The friend’s server uses this category attribute to transmit the unique identifier for that particular conversation to the group chat host’s server.
The RSS <cloud> element is used to trigger a notification which gets sent to friends’ server apps if a given group chat has new messages in it. Each server uses its own RSS cloud callback hub to notify friends about activity of groups that are hosted on that particular server.
When new messages are added to a group chat, the feeds that come out of that hosts’ server app are updated with the fresh messages. The RSS cloud mechanism in turn sends a notification to all subscribed friends’ servers, prompting each server to fetch and read the updated feed with new messages in it from the host server.
Each server app uses WebSockets to instantly push messages from the server to the mobile app that is connected to it.







