Skip to content
Robert Flack edited this page Apr 27, 2016 · 2 revisions

Overview

CIRC is going to adopt a client server architecture. This will enable a number of features:

  • Multiple CIRC windows.
  • Maintaining connections in background.
  • Improved support for multiple clients connecting to same server(s)
    • Mobile web client support.
    • Same code path used for remote client as local client.
    • Push notifications!
  • Improved scripting and customization.
    • Client scripts will be able to define and customize everything about the client including the UI.
    • Server-side scripts? This would eliminate the current issue with multiple clients running same scripts (e.g. auto-responses).

Design

See the design diagram for a high level overview of what this may look like.

At a high level, one server instance will allow an arbitrary number of connecting clients. The server may be a NodeJS server instance (allowing clients to connect over http(s)) or a Chrome App background page instance (optionally also serving over http(s)). Once loaded, the client will establish a connection to the backend server (over one of WebSocket, WebRTC, or postMessage in the chrome app case). This connection will be used to subscribe to updates for channels and fetch channel history / etc.

Clone this wiki locally