https://github.com/valen-h/livechat
LiveChat is a sytem built upon express4/socket.io/babel which offers chatting functionality over HTTP.
https://github.com/valen-h/livechat
babel chat express nodejs rooms server socket-io websockets
Last synced: 10 months ago
JSON representation
LiveChat is a sytem built upon express4/socket.io/babel which offers chatting functionality over HTTP.
- Host: GitHub
- URL: https://github.com/valen-h/livechat
- Owner: Valen-H
- Created: 2018-12-25T14:39:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-30T18:18:19.000Z (about 7 years ago)
- Last Synced: 2025-03-23T11:33:12.480Z (11 months ago)
- Topics: babel, chat, express, nodejs, rooms, server, socket-io, websockets
- Language: JavaScript
- Size: 5.1 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LiveChat
LiveChat is a sytem built upon express4/socket.io/babel which offers chatting functionality over HTTP.
## CLI
The supported CLI commands are:
* exit - close server and exit cli
* quit - close cli but keep server open
* system comm - execute a system command
* restart - restart server and cli
* clear - clear cli output
* logs - view logs
* erase - erase logs
* say id msg - send message to a client identified by his socket.io id
* sayall msg - send message to all clients connected
* eval comm - send a command to be eval'd locally on client's pc
* refresh [clientId] - refresh all client browsers or a specific one
* help command - command(s) help
> When no command is passed but a message is given, it's executed locally on the server
> default commands prefix is '.', start all commands with this except the server-eval
## Browser Commands
There are several in-chat commands too:
* disconnect - Close WebSocket (which by default causes browser refresh in 5 seconds)
* admin pass - Login as admin through chat to unlock more commands
> Current chat prefix is `!!`
> *Inline commands also exist!!*
* `$bBOLD$b`, `$iItalic$i`, `$uUnderline$u`, `$USR`(username), `$d`(date)
> escape them as `$\b`
## Other Features
* When the server main files are changed, the server automatically reloads unless the environmental variable BLOCKRELOAD is passed,
Similarily, when `client/JS` files are edited they get converted to ES5 and served under `client/JS5`, they get minified and Flow-compiled aswell,
Block the automatic rebuild with the BLOCKBUILD environmental variable.
* The default serving path can be changed from `./client` to a custom one through `config.json`
* You can force `babel` compilation with `npm run build` but this requires the package to be installed as `--save-dev` and default standards to be followed.
* The server works with the Node-builtin `cluster` module and communicates with each shard with an `ipc` socket (not redis!)
* The server auto-restarts on fatal/syntax errors and abnormal quits and catches globally unhandled errors.
* Serving the special `.htmx`/`.htmlx`/`.jsx`/`.cssx` files leads to the translation of `@@\expression@@\` expressions in them before serving. Appending a `\` (escape sequence) after the `@@` escapes the whole expression from being evaluated (like this example).
* There are also the special `.xtml`/`.xtm`/`.xjs`/`.xcss` files that get processed once at launch-time.
> Note that these evaluations happen server-side!!
* The history of the last 50 messages posted is kept but discarded upon server restart. The max history size can be adjusted from the `config.json` file together with the passwords.
* There's also a spam filter that disallows sending requests faster than 800ms, change threshold in `config.json`