<commit_before>![seatcamp](https://github.com/tec27/seatcamp/blob/master/icon/seatcamp-256.png)
# seatcamp
A web-based ephemeral chat site that lets users send simple, short messages
along with a 2-second video of themselves.

The offical server can be found at [https://seat.camp](https://seat.camp)

## Table of contents
- [Features](#features)
- [Running a server](#running-a-server)
  - [Required software](#required-software)
  - [Configuring your server](#configuring-your-server)
  - [Normal options](#normal-options)
  - [HTTPS options](#https-options-all-must-be-specified-if-you-want-to-use-https)
- [Protocol](#protocol)
  - [Connecting](#connecting)
  - [Messages](#messages)
  - [Status updates](#status-updates)
- [Contributing](#contributing)
- [Special thanks to](#special-thanks-to)
- [License](#license)

## Features
- Send a message to anyone connected to the same seatcamp server
- Provides both webm and h264 videos alongside chats, allowing clients to
request whichever they wish to use (video transcoding is done using ffmpeg
or avconv, whichever is available)
- Proxies to a [meatspace](https://github.com/meatspaces/meatspace-chat-v2)
server, sending any seatcamp user's messages to that server as well as
displaying meatspace users' messages to seatcamp users
- No signup required, but users receive a unique ID based on browser
characteristics (displayed to users as an identicon alongside messages).
- Allows for muting users based on their ID, removing all their current
messages and blocking any future ones
- Performs extremely minimal DOM element creation and recycles message
elements, meaning the page loads quickly and is quite stable over long
periods of time.

## Running a server
### Required software
seatcamp requires [node](http://nodejs.org) (0.10.x) and ffmpeg/libav in order to work. Node can be
downloaded from the official site. ffmpeg or libav can generally be installed from your OS's
package manager, or from source. Examples of installing it:

**OSX**
```bash
$ brew install ffmpeg --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-theora --with-tools
```

**Ubuntu/Debian**
```bash
$ sudo apt-get install libav-tools
```

### Configuring your server
Server configuration is handled through a JSON file: `conf.json`.

`conf.json-example` in the main directory will often provide all you need
for a development server, so for most developers, you can simply do:
```bash
$ cp conf.json-example conf.json
```

This will set you up with a server running on port `3456` over HTTP, and
connecting to a meatspace server at port `3000`.

The server can then be run with:<commit_msg>Update readme slightly to note supported node versions.<commit_after>![seatcamp](https://github.com/tec27/seatcamp/blob/master/icon/seatcamp-256.png)
# seatcamp
A web-based ephemeral chat site that lets users send simple, short messages
along with a 2-second video of themselves.

The offical server can be found at [https://seat.camp](https://seat.camp)

## Table of contents
- [Features](#features)
- [Running a server](#running-a-server)
  - [Required software](#required-software)
  - [Configuring your server](#configuring-your-server)
  - [Normal options](#normal-options)
  - [HTTPS options](#https-options-all-must-be-specified-if-you-want-to-use-https)
- [Protocol](#protocol)
  - [Connecting](#connecting)
  - [Messages](#messages)
  - [Status updates](#status-updates)
- [Contributing](#contributing)
- [Special thanks to](#special-thanks-to)
- [License](#license)

## Features
- Send a message to anyone connected to the same seatcamp server
- Provides both webm and h264 videos alongside chats, allowing clients to
request whichever they wish to use (video transcoding is done using ffmpeg
or avconv, whichever is available)
- Proxies to a [meatspace](https://github.com/meatspaces/meatspace-chat-v2)
server, sending any seatcamp user's messages to that server as well as
displaying meatspace users' messages to seatcamp users
- No signup required, but users receive a unique ID based on browser
characteristics (displayed to users as an identicon alongside messages).
- Allows for muting users based on their ID, removing all their current
messages and blocking any future ones
- Performs extremely minimal DOM element creation and recycles message
elements, meaning the page loads quickly and is quite stable over long
periods of time.

## Running a server
### Required software
seatcamp requires [io.js](http://iojs.org) or [node](http://nodejs.org) (0.12.x+) and ffmpeg/libav
in order to work. io.js/Node can be downloaded from the official site. ffmpeg or libav can generally
be installed from your OS's package manager, or from source. Examples of installing it:

**OSX**
```bash
$ brew install ffmpeg --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-theora --with-tools
```

**Ubuntu/Debian**
```bash
$ sudo apt-get install libav-tools
```

### Configuring your server
Server configuration is handled through a JSON file: `conf.json`.

`conf.json-example` in the main directory will often provide all you need
for a development server, so for most developers, you can simply do:
```bash
$ cp conf.json-example conf.json
```

This will set you up with a server running on port `3456` over HTTP, and
connecting to a meatspace server at port `3000`.

The server can then be run with:
{'fraction_non_alphanumeric': 0.1061128242336296, 'fraction_numerical': 0.007981135497914021, 'mean_word_length': 4.530591775325978, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6128664', 'n_tokens_mistral': 1687, 'n_tokens_neox': 1564, 'n_words': 636}