Skip to content
Ilkka Oksanen edited this page Jan 13, 2019 · 26 revisions

Server components

Front-end server

Koa based. There can be several front-end servers if load balancing is needed.

Loopback backend

Handles message distribution for internal MAS groups

IRC backend

IRC backend is split into two separate OS tasks:

Connection Manager

Minimal IRC socket manager (less than 100 lines of code). Allows the controller to be restarted/updated without breaking TCP sockets for IRC connections. Uses persistent Redis FIFO to communicate with the controller.

Controller

Handles everything else, e.g. IRC protocol parsing and message distribution.

Redis

Has two roles:

  • Database: Short term storage for all message and session data. Permanent(!) storage for user database.

  • Message broker: Different server components communicate by sending events to each other. MAS includes its own Redis backed message passing library. See /server/lib/courier.js for details.

Elasticsearch

Optional. Long term storage and search engine for old messages.

Clients

Web client

Part of the MAS project. Uses Mobx and Ember frameworks. Will be ported to React in near future.

Other clients

Separate projects.