<commit_before>[![Circle CI](https://circleci.com/gh/rangle/angular2-chat.svg?style=svg)](https://circleci.com/gh/rangle/angular2-chat)

# Angular 2 real-time messaging application example

This is an example of an Angular 2 application using Redux and TypeScript.
It is a real-time communication application that uses socket.io. To try,
open several different web browsers (not the same browser instance! Use
Chrome Canary and Chrome simultaneously, for example), log in, add a contact,
and start messaging.

Note that this was put together in a very short period, 2 days, and there
are likely many oversights and things that are not fully fleshed out. (For
example, contact presence is not fully baked). But as an example application,
it serves its purpose.

Another note: the server uses MEMORY to store the list of users, as well as
any other state it has. There is no persistance whatsoever (except in the
browser, where redux state is persisted). Therefore if you restart NodeJS
or modify any files in the server/ folder, you MUST re-log-in to the app
otherwise you will start getting 401 Unauthorized on your web service calls.

Also note, this application is not supposed to be the gold standard in Angular 2
application development. We built this in a training class in order to illustrate
how to use various Angular 2 features and bits of functionality. So do not look<commit_msg>Presence is hooked up, take that note out<commit_after>[![Circle CI](https://circleci.com/gh/rangle/angular2-chat.svg?style=svg)](https://circleci.com/gh/rangle/angular2-chat)

# Angular 2 real-time messaging application example

This is an example of an Angular 2 application using Redux and TypeScript.
It is a real-time communication application that uses socket.io. To try,
open several different web browsers (not the same browser instance! Use
Chrome Canary and Chrome simultaneously, for example), log in, add a contact,
and start messaging.

Note that this was put together in a very short period, 2 days, and there
are likely many oversights and things that are not fully fleshed out.But
as an example application, it serves its purpose.

Another note: the server uses MEMORY to store the list of users, as well as
any other state it has. There is no persistance whatsoever (except in the
browser, where redux state is persisted). Therefore if you restart NodeJS
or modify any files in the server/ folder, you MUST re-log-in to the app
otherwise you will start getting 401 Unauthorized on your web service calls.

Also note, this application is not supposed to be the gold standard in Angular 2
application development. We built this in a training class in order to illustrate
how to use various Angular 2 features and bits of functionality. So do not look
{'fraction_non_alphanumeric': 0.04972776769509982, 'fraction_numerical': 0.007259528130671506, 'mean_word_length': 4.6016260162601625, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7498434', 'n_tokens_mistral': 724, 'n_tokens_neox': 669, 'n_words': 417}